asp.net-mvc - ASP .Net MVC 3 - 表单、批量编辑、强类型 View 和验证

标签 asp.net-mvc asp.net-mvc-3

我正在使用IQueryable<Book>作为我的模型CheckIn查看。

我有兴趣允许用户同时 checkin 多本书。这就是我使用IQueryable的原因对于模型。

如果我错了,请纠正我,但据我所知,对于这种情况,@Html.EditorFor将创建多个具有相同元素 id 的元素。不是吗?

为可查询集合中的所有书籍创建编辑器表单并确保客户端验证继续有效的最佳方法是什么?

最佳答案

Please correct me if I am wrong but as far as I know for this scenario, @Html.EditorFor will create more than one element with the same element id. Wouldn't it?

呃,不。

型号:

public class Book
{
    public int Id { get; set; }
    public bool Selected { get; set; }
}

Controller :

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new[]
        {
            new Book { Id = 1, Selected = false },
            new Book { Id = 2, Selected = true },
            new Book { Id = 3, Selected = false },
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(IEnumerable<Book> model)
    {
        return View(model);
    }
}

查看:

@model IEnumerable<Book>
@using (Html.BeginForm())
{
    <table>
        <thead>
            <tr>
                <th>Id</th>
                <th>Selected</th>
            </tr>
        </thead>
        <tbody>
            @Html.EditorForModel()
        </tbody>
    </table>
    <button type="submit">OK</button>
}

编辑器模板(~/Views/Shared/EditorTemplates/Book.cshtml):

@model Book
<tr>
    <td>@Html.EditorFor(x => x.Id)</td>
    <td>@Html.CheckBoxFor(x => x.Selected)</td>
</tr>

生成的标记:

<form action="/" method="post">    
    <table>
        <thead>
            <tr>
                <th>Id</th>
                <th>Selected</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>
                    <input class="text-box single-line" data-val="true" data-val-number="Le champ Id doit &amp;#234;tre un nombre." data-val-required="The Id field is required." name="[0].Id" type="text" value="1" />
                </td>
                <td>
                    <input data-val="true" data-val-required="The Selected field is required." name="[0].Selected" type="checkbox" value="true" />
                    <input name="[0].Selected" type="hidden" value="false" />
                </td>
            </tr>
            <tr>
                <td>
                    <input class="text-box single-line" data-val="true" data-val-number="Le champ Id doit &amp;#234;tre un nombre." data-val-required="The Id field is required." name="[1].Id" type="text" value="2" />
                </td>
                <td>
                    <input checked="checked" data-val="true" data-val-required="The Selected field is required." name="[1].Selected" type="checkbox" value="true" />
                    <input name="[1].Selected" type="hidden" value="false" />
                </td>
            </tr>
            <tr>
                <td>
                    <input class="text-box single-line" data-val="true" data-val-number="Le champ Id doit &amp;#234;tre un nombre." data-val-required="The Id field is required." name="[2].Id" type="text" value="3" />
                </td>
                <td>
                    <input data-val="true" data-val-required="The Selected field is required." name="[2].Selected" type="checkbox" value="true" />
                    <input name="[2].Selected" type="hidden" value="false" />
                </td>
            </tr>
        </tbody>
    </table>

    <button type="submit">OK</button>
</form>

关于asp.net-mvc - ASP .Net MVC 3 - 表单、批量编辑、强类型 View 和验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9265491/

相关文章:

c# - 如何向我的模型添加固定值属性?

c# - 无法将 View 数据下拉列表的选定值获取到我的 Controller 操作?

javascript - ASP .NET MVC,IE 中的未知运行时错误(嵌套表单)

javascript - 在 jQuery 中使用通用 div id 按钮不会在多个 View 上消失

c# - 如何使用 asp.net mvc 和单元测试组织代码和测试

asp.net-mvc - ASP.NET MVC中的数据驱动验证

javascript - 日期在 IE 浏览器中显示无效,但适用于 chrome 和 Firefox

asp.net - MVC 身份 ||禁用所有 cookie 和 "remember me"选项?

c# - 奇怪的 DropDownListFor/SelectListItem 问题未设置默认值

c# - 将依赖项注入(inject)类库中的 AuthorizeAttribute