所有基本的html幫助程序都會返回System.Web.Mvc.MvcHtmlString
類型的對象。您可以爲該類設置擴展方法。這裏有一個例子:
public static class MvcHtmlStringExtensions
{
public static MvcHtmlString If(this MvcHtmlString value, bool check)
{
if (check)
{
return value;
}
return null;
}
public static MvcHtmlString Else(this MvcHtmlString value, MvcHtmlString alternate)
{
if (value == null)
{
return alternate;
}
return value;
}
}
然後你就可以像一個視圖中使用這些:
@Html.TextBoxFor(model => model.Name)
.If(Model.Name.StartsWith("A"))
.Else(Html.TextBoxFor(model => model.LastName)
要作出這樣的修改所提供的HTML標記屬性擴展方法,你就必須轉換結果到一個字符串,並找到並替換您正在尋找的值。
using System.Text.RegularExpressions;
public static MvcHtmlString Identity(this MvcHtmlString value, string id)
{
string input = value.ToString();
string pattern = @"(?<=\bid=")[^"]*";
string newValue = Regex.Replace(input, pattern, id);
return new MvcHtmlString(newValue);
}
public static MvcHtmlString Name(this MvcHtmlString value, string id)
{
string input = value.ToString();
string pattern = @"(?<=\bname=")[^"]*";
string newValue = Regex.Replace(input, pattern, id);
return new MvcHtmlString(newValue);
}
的id
和name
屬性總是由HTML輔助添加,但是如果你想與屬性可能不會在那裏工作(你就必須添加它們,而不是僅僅更換他們的),你將需要修改代碼。