Razor 中 ViewModel 的模型名称
Model names from ViewModel in Razor
我有以下视图模型:
public class ProfileViewModel
{
public BandProfileModel BandProfile { get; set; }
public MusicanProfileModel MusicianProfile { get; set; }
public RegularProfileModel RegularProfile { get; set; }
}
我在我的视图中使用此 ViewModel Post 表单:
@using (Ajax.BeginForm("RegisterBand", "NewProfile", new AjaxOptions() { HttpMethod = "Post",
InsertionMode = InsertionMode.Replace
}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-horizontal">
<div class="form-group">
<div class="col-md-10">
Bandname
</div>
<div class="col-md-10">
@Html.EditorFor(x => x.BandProfile.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(x => x.BandProfile.Name, "", new { @class = "text-danger" })
</div>
</div>
这是我的 RegisterBand 型号:
public ActionResult RegisterBand(BandProfileModel model)
{
if (ModelState.IsValid == false)
{
return Json(JsonRequestBehavior.AllowGet);
}
return View("Index");
}
我遇到的问题是输入字段的名称属性是 BandProfile.Name、BandProfile.Genre,而不仅仅是流派和名称。
我该如何解决这个问题?
您可以将 RegisterBand
ActionResult 更改为接受 ProfileViewModel
。
public ActionResult RegisterBand(ProfileViewModel model)
{
if (ModelState.IsValid == false)
{
return Json(JsonRequestBehavior.AllowGet);
}
return View("Index");
}
您的 HttpPost
需要接受您传递到表单中的同一对象的实例,否则它将不知道要绑定到什么名称。
如果你想改变控件的名称和id,你可以这样做
@Html.EditorFor(x => x.BandProfile.Name, new { htmlAttributes = new { @class = "form-control", @id="Genre",@Name="Genre" } })
我有以下视图模型:
public class ProfileViewModel
{
public BandProfileModel BandProfile { get; set; }
public MusicanProfileModel MusicianProfile { get; set; }
public RegularProfileModel RegularProfile { get; set; }
}
我在我的视图中使用此 ViewModel Post 表单:
@using (Ajax.BeginForm("RegisterBand", "NewProfile", new AjaxOptions() { HttpMethod = "Post",
InsertionMode = InsertionMode.Replace
}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-horizontal">
<div class="form-group">
<div class="col-md-10">
Bandname
</div>
<div class="col-md-10">
@Html.EditorFor(x => x.BandProfile.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(x => x.BandProfile.Name, "", new { @class = "text-danger" })
</div>
</div>
这是我的 RegisterBand 型号:
public ActionResult RegisterBand(BandProfileModel model)
{
if (ModelState.IsValid == false)
{
return Json(JsonRequestBehavior.AllowGet);
}
return View("Index");
}
我遇到的问题是输入字段的名称属性是 BandProfile.Name、BandProfile.Genre,而不仅仅是流派和名称。
我该如何解决这个问题?
您可以将 RegisterBand
ActionResult 更改为接受 ProfileViewModel
。
public ActionResult RegisterBand(ProfileViewModel model)
{
if (ModelState.IsValid == false)
{
return Json(JsonRequestBehavior.AllowGet);
}
return View("Index");
}
您的 HttpPost
需要接受您传递到表单中的同一对象的实例,否则它将不知道要绑定到什么名称。
如果你想改变控件的名称和id,你可以这样做
@Html.EditorFor(x => x.BandProfile.Name, new { htmlAttributes = new { @class = "form-control", @id="Genre",@Name="Genre" } })