0

チェックボックス付きのユーザーのリストを表示する部分ビューを作成したので、この部分ビューをさまざまなページで再利用できます。問題は、入力を生成した正しい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 今夜チェックします

4

1 に答える 1

1

了解しました。EditorForは完全に機能しました。これについてもっと読む必要があります。

于 2012-11-27T19:55:41.030 に答える