我添加了一個類的HTML自定義擴展可見:HtmlHelperExtensions不考慮MVC3 asp.net
using System;
using System.Linq.Expressions;
using System.Text;
using System.Web.Mvc;
using System.Web.Mvc.Html;
namespace App.MvcHtmlHelpers
{
public static class HtmlHelperExtensions
{
public static MvcHtmlString ComboBox(HtmlHelper html, string name, SelectList items, string selectedValue)
{
var sb = new StringBuilder();
sb.Append(html.DropDownList(name + "_hidden", items, new { @style = "width: 200px;", @onchange = "$('input#" + name + "').val($(this).val());" }));
sb.Append(html.TextBox(name, selectedValue, new { @style = "margin-left: -199px; width: 179px; height: 1.2em; border: 0;" }));
return MvcHtmlString.Create(sb.ToString());
}
public static MvcHtmlString ComboBoxFor<TModel, TProperty>(HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, SelectList items)
{
var me = (MemberExpression)expression.Body;
var name = me.Member.Name;
var sb = new StringBuilder();
sb.Append(html.DropDownList(name + "_hidden", items, new { @style = "width: 200px;", @onchange = "$('input#" + name + "').val($(this).val());" }));
sb.Append(html.TextBoxFor(expression, new { @style = "margin-left: -199px; width: 179px; height: 1.2em; border: 0;" }));
return MvcHtmlString.Create(sb.ToString());
}
我也註冊在我的網站的web配置:
<namespaces>
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.WebPages" />
<add namespace="App.MvcHtmlHelpers"/>
</namespaces>
在我看來,我導入命名空間:
<%@ Import Namespace="RSPWebApp.MvcHtmlHelpers" %>
但是當我去調用它的觀點,它不承認自定義extensi上。有人可以幫我告訴我我可能錯過了什麼嗎?非常感謝! <%:Html.ComboBoxFor(A = > a.Street2,streetAddressListItems)%>
我不認爲我們可以判斷OP是否使用Razor視圖。 – MushinNoShin
@JofryHS,是正確的,你錯過了「這個」關鍵字,並把參考放在錯誤的Web.Config – MVCKarl