5
關於這個問題一直有很多問題......但不知何故,我無法獲得這個綁定工作,我仍然在我發佈的視圖模型中獲得空值。這是MVC 4.NET MVC 4強類型ViewModel包含強類型ModelFor和EditorTemplate部分視圖不具約束
這裏是主視圖模型
public class RoleVM {
[Required]
[Display(Name = "Name of the Role")]
public string Role {get; set;}
public IEnumerable<RolePermission> permissions { get; set; }
}
這裏是RolePermission類
public class RolePermission {
public int id;
public bool permission_value;
public string name { get; set; }
}
這裏是GET控制器
public ActionResult Create() {
RoleVM role_vm = new RoleVM();
var allpermissions = from p
in permission_repo.GetPermissions()
select p;
role_vm.permissions = from p
in allpermissions
select new RolePermission
{ name = p.name, id = p.PermissionId, permission_value = false };
return View(role_vm);
}
這裏創建方法是Create.cshtml文件
@model RoleVM
@using (Html.BeginForm("Create", "Role",
FormMethod.Post, new { @class = "permission_form" }))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>RoleVM</legend>
<div class="form-item">
@Html.LabelFor(model => model.Role)
@Html.EditorFor(model => model.Role)
@Html.ValidationMessageFor(model => model.Role)
</div>
@Html.EditorFor(model => model.permissions)
<p>
<input class="submit-btn" type="submit" value="Create" />
</p>
</fieldset>
}
下一頁這裏是位於〜/瀏覽次數的rolepermissions.cshtml文件/共享/ EditorTemplates
@model RolePermission
<div class="form-item">
@Html.HiddenFor(modelItem => modelItem.id)
@Html.LabelFor(modelItem => modelItem.permission_value, Model.name)
@Html.CheckBoxFor(modelItem => modelItem.permission_value)
</div>
這裏是頁面上呈現的HTML項目之一的例子
<div class="form-item">
<input data-val="true" data-val-number="The field Int32 must be a number." data-val-required="The Int32 field is required." id="permissions_2__id" name="permissions[2].id" type="hidden" value="3" />
<label for="permissions_2__permission_value">Role-Edit</label>
<input data-val="true" data-val-required="The Boolean field is required." id="permissions_2__permission_value" name="permissions[2].permission_value"
type="checkbox" value="true" /><input name="permissions[2].permission_value" type="hidden" value="false" />
</div>
最後這裏是創建POST方法
[HttpPost]
public ActionResult Create(RoleVM rolevm)
{
//In here rolevm.role is populated based on the textbox input
//However rolevm.permissions is there with the correct
//number of items, but the values all are not binded
// id is null, name is empty, and permission_value is false
// regardless of which checkboxes were checked
return RedirectToAction("Index");
}
對綁定的任何幫助是與張貼的模型起訴真的很棒。
非常感謝! – Evgeny 2012-09-13 12:52:02
幫助我的隊友,一直想知道爲什麼我的模型綁定不會在窗體中張貼某些值,然後我讀這個,並說我會檢查我的viewModel,並確定某些屬性沒有訪問器的屬性 – John 2013-02-09 22:19:19
但是,你是否發現爲什麼訪問器是必要的?是否設置訪問器下的屬性來爲實體提供水合物? – ruffin 2013-12-13 19:58:57