2017-02-27 97 views
0

我試圖從aps.net MVC視圖讀取值:據我所知,這似乎是一個很基本的問題,但是,我找不到這方面的任何解決方案,所以我轉向你:在我的情況,似乎參數playlistModel.Model.Name永遠不會發送,或至少爲null。故障排除簡單創建自

我的控制器:

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create(PlaylistViewModelDetails playlistModel) 
{ 
    if (!String.IsNullOrEmpty(playlistModel.Model.Name)) 
    { 
     //this is never called due to playlistModel.Model.Name being null. 
     return RedirectToAction("Index"); 
    } 
    return View(playlistModel); 
} 


@model Orpheus.Models.ViewModels.PlaylistViewModelDetails 
@using (Html.BeginForm()) 
{ 
@Html.AntiForgeryToken() 

<div class="form-horizontal"> 
    <hr /> 
    @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
    <div class="form-group"> 
     @Html.LabelFor(model => model.Model.Name, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.Model.Name, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(model => model.Model.Name, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" value="Erstellen" class="btn btn-default" /> 
     </div> 
    </div> 
</div> 
} 


public class PlaylistViewModelDetails 
{ 
    public PlaylistModel Model = new PlaylistModel(); //a seperate class containing a string value, which must be read from the form 
} 

謝謝你幫我解決這個問題!

回答

1

PlaylistViewModelDetails只包含一個領域ModelDefaultModelBinder只綁定屬性,而不綁定字段。

模型更改爲

public class PlaylistViewModelDetails 
{ 
    public PlaylistModel Model { get; set; } 
} 

,如果你想初始化PlaylistModel

public PlaylistViewModelDetails() 
{ 
    Model = new PlaylistModel(); 
} 

還要注意NamePlaylistModel還需要添加屬性參數的構造函數。

+0

非常感謝你,這解決了這個問題對我來說:) –