【问题标题】:html helper - how do I get rid of the name attribute?html helper - 我如何摆脱 name 属性?
【发布时间】:2015-04-12 02:09:39
【问题描述】:

我有一个强类型的局部视图。该模型有一个属性,它是 Active Directory 中的用户列表,由名为 ADUser 的类表示。

我有一个部分视图,它表示此属性的下拉列表。虽然我将这个下拉列表的值用于其他一些事情,但我不需要提交它的值,所以我想我会删除 name 属性。但是,一旦 Html 加载,name 属性总是设置为 Html 助手想要分配的内容。有没有办法可以删除该属性,以便下拉列表的值不提交?

在我的主要部分视图中(_adusers 是列表的名称):

<%: Html.Partial("ADUserDropDown", Model._adusers)%>

在我的下拉部分视图中:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<MyProject.Models.ADUser>>" %>

<%= Html.DropDownList("", new SelectList(Model, "ValueText", "DisplayText"), new { name = "", size = "12" })%>
<input type=button value="Search..." />
<input type=button value="Close" />

这会导致:

<select name="_master" size="12">

_master 是父模型的名称。如果我在Html.DropDownList 的第一个参数中添加一些内容,则会导致:

<select name="_master.WhateverINamedIt" size="12">

我想实现:

<select size="12">

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-2


    【解决方案1】:

    那么使用 HTML 帮助程序就没有意义了。您可以将局部视图的代码更改为:

    <select size="12">
    @foreach(var item in Model)
    {
        <option value="@item.ValueText">@Html.DisplayFor(m => item.DisplayText)</option>
    }
    </select>
    

    但是,如果您想坚持使用 DropDownList 帮助器,则必须使用 大写字母 指定 html 属性中的 name 参数:

    <%= Html.DropDownList("", new SelectList(Model, "ValueText", "DisplayText"),
        new { Name = string.Empty, size = "12" })%>
    

    作为替代方案,您可以使用 jQuery 删除名称:

    $('[name="_master.WhateverINamedIt"]').removeAttr('name');
    

    不喜欢或不使用 jQuery,普通的 javascript 就可以了:

    document.getElementsByName('_master.WhateverINamedIt')[0].removeAttribute('name');
    

    【讨论】:

    • 感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    相关资源
    最近更新 更多