Возвращает HtmlString
или передает результат на Html.Raw()
вызов.
Измените свою функцию на:
public static MvcHtmlString SelectedIfEqual(this int id, int otherId)
{
if (id == otherId)
return new MvcHtmlString(" selected='selected'");
return null;
}
Если вы не хотите изменять свой код, добавьте расширение к HtmlHelper
:
public static class MyHelper
{
// This doesn't work
//public static Foo Grid(this HtmlHelper helper, string id)
//{
// return new Foo(id).ToString();
//}
// This should work as intended
public static MvcHtmlString Foo(this HtmlHelper helper, Foo theFoo)
{
return theFoo.ToHtmlString();
}
}
В классе Foo
метод ToHtmlString()
будет выглядеть как
public MvcHtmlString ToHtmlString()
{
return new MvcHtmlString(ToString());
}
И тогда в представлении вы можете использовать
@Html.Foo(theFoo)
Если вы не хотите использовать Extension Helper, вы можете также использовать:
@Html.Raw(Model.idField.SelectIfEqual(otherId))
Надеюсь, это поможет.