我正在尝试从aps.net mvc中的视图中读取一个值:我知道这似乎是一个非常基本的问题,但是,我找不到任何解决方案,所以我转向你:In我的情况,似乎从未发送参数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
}
感谢您帮助我解决此问题!
答案 0 :(得分:1)
您的PlaylistViewModelDetails
仅包含Model
的字段。 DefaultModelBinder
仅绑定属性,而不绑定字段。
将模型更改为
public class PlaylistViewModelDetails
{
public PlaylistModel Model { get; set; }
}
如果要初始化PlaylistModel
public PlaylistViewModelDetails()
{
Model = new PlaylistModel();
}
另请注意,Name
中的PlaylistModel
也需要是属性。