是否有一個通用的Html.Element?ASP.NET MVC Html.Element?
我希望能夠做到這一點:
Html.Element<AccountController>("IFrame", "elementName", new { src = c => c.ChangePassword })
是否有一個通用的Html.Element?ASP.NET MVC Html.Element?
我希望能夠做到這一點:
Html.Element<AccountController>("IFrame", "elementName", new { src = c => c.ChangePassword })
最合適的,「MVC-ISH」的方法來建立HTML內容您所描述的方法是創建一個自定義的HtmlHelper擴展方法。此方法應該使用System.Web.Mvc.TagBuilder的實例來構造HTML。這裏有一個例子(從我目前的項目之一複製,但不是孤立實際測試):
using System.Web.Mvc;
using System.Linq;
public static class HtmlHelperExtensions
{
public static string Element(this HtmlHelper htmlHelper, string tag, string name, object htmlAttributes)
{
TagBuilder builder = new TagBuilder(tag);
builder.GenerateId(name);
builder.MergeAttributes(htmlAttributes);
// use builder.AddCssClass(...) to specify CSS class names
return builder.ToString()
}
}
// example of using the custom HtmlHelper extension method from within a view:
<%=Html.Element("iframe", "elementName", new { src = "[action url here]" })%>
至於延長您的自定義的HtmlHelper方法來支持控制器動作拉姆達,this post是一個良好的開端。
您當然可以按照您首先完成的方式編寫擴展方法。本質上是通用的,爲行動提供lambda表達式。這樣你就可以避免* magic strings *使你的代碼運行時錯誤,因爲你的動作將在編譯時被檢查。 – 2009-12-30 10:26:52
你不能直接做嗎?如果您需要將ChangePassword轉換爲字符串URL,則可以使用Html.BuildUrlFromExpression。 – queen3 2009-12-22 15:48:14