【问题标题】:HtmlPrefix for Partialview, remove the dot局部视图的 Html 前缀,去掉点
【发布时间】:2014-08-27 17:00:32
【问题描述】:

我创建了一个局部视图,该视图应显示带有复选框的用户列表,因此我可以在各个页面中重复使用此局部视图。 问题是,我无法为生成的输入提供正确的 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 MVC 4 Strongly typed ViewModel containing Strongly typed Model with EditorFor and EditorTemplate partial view not binding 今晚去看看

【问题讨论】:

    标签: c# asp.net-mvc-4 partial-views


    【解决方案1】:

    好的,EditorFor 完美运行.. 我需要阅读更多相关信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 2020-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      相关资源
      最近更新 更多