html帮助器 - 如何摆脱name属性?

时间:2015-02-11 16:02:14

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

我有一个强类型的局部视图。该模型具有一个属性,该属性是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">

1 个答案:

答案 0 :(得分: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');