チェックボックス付きのユーザーのリストを表示する部分ビューを作成したので、この部分ビューをさまざまなページで再利用できます。問題は、入力を生成した正しいhtmlprefixを取得できないことです(プレフィックスの。を削除したい)
モデル:
public class CircleEditViewModel
{
[Key]
public int CircleId { get; set; }
[Required]
[MaxLength(100)]
public string Name { get; set; }
public bool IsSystem { get; set; }
public List<SimpleUserListViewModel> Users { get; set; }
public CircleEditViewModel()
{
Users = new List<SimpleUserListViewModel>();
}
}
public class SimpleUserListViewModel
{
public SimpleUserListViewModel()
{
}
public SimpleUserListViewModel(User user)
{
this.UserId = user.UserId;
FullName = user.FullName;
}
public int UserId { get; set; }
public byte[] Picture { get; set; }
public string FullName { get; set; }
public bool IsCheckedForAction { get; set; }
}
「メインビュー」:
@model Wims.Website.ViewModels.CircleEditViewModel
<script type="text/javascript">
$(document).ready(function () {
$.validator.unobtrusive.parse('form');
});
</script>
@using (Ajax.BeginForm(Html.ViewContext.RouteData.Values["Action"].ToString(), null, new AjaxOptions { HttpMethod = "POST", OnSuccess = "SaveDone(data)" }, new { id = "editform" }))
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Circle</legend>
@Html.Label(DateTime.Now.ToString());
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
</fieldset>
@Html.Partial("~/Views/Shared/_UserList.cshtml", Model.Users,
new ViewDataDictionary(Html.ViewDataContainer.ViewData)
{
TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "Users" }
})
@Html.GenerateSecureDataControls(model => model.CircleId)
<input type="submit" value="Save" />
}
部分図:
@model List<Wims.Website.ViewModels.Shared.SimpleUserListViewModel>
@{
if (Model != null)
{
for (int i = 0; i < Model.Count; i++)
{
<div class="userDetail">
<div>
<div>
@Html.CheckBoxFor(model => model[i].IsCheckedForAction)
</div>
<div class="iconDiv">
@Html.Image("~/Content/Images/defaultUser.jpg", Model[i].FullName, null)
</div>
<div>
@Html.TextBoxFor(model => model[i].FullName)
@Html.HiddenFor(model => model[i].UserId)
</div>
</div>
</div>
<div style="clear: both"></div>
}
}
}
もうすぐです。入力で生成されたIDは
id="Users.[0].FullName
最初のドットを削除する方法はありますか?昨日ブログで解決策を見つけましたが(もう見つかりません...)、MVC3用で、とにかく動作させることができませんでした...
助けてくれてありがとう!
編集: たぶん、部分ビューの代わりにEditorForを使用する必要があります: .NET MVC4EditorForとEditorTemplate部分ビューがバインドされていない強い型のモデルを含む強い型のViewModel 今夜チェックします