Asp MVC 4 создает собственный вспомогательный метод html, похожий на Html.BeginForm
У меня есть следующий HTML:
<div data-bind="stopBindings">
<div data-viewId="languageList" data-bind="with: viewModel">
<table>
<tr>
<td ><label for="availableLanguages">Available Languages:</label></td>
</tr>
<table>
</div>
</div>
Я хочу сделать собственный помощник HTML и использовать его так (похоже наHtml.BeginForm
)
@Html.BeginView()
{
<table>
<tr>
<td ><label for="availableLanguages">Available Languages:</label></td>
</tr>
</table>
}
Я начал делать свой вспомогательный метод
public static class BeginViewHelper
{
public static MvcHtmlString BeginView(this HtmlHelper helper, string viewId)
{
var parentDiv = new TagBuilder("div");
parentDiv.MergeAttribute("data-bind", "preventBinding: true");
return new MvcHtmlString();
}
}
Я читал, как сделать базовый html помощник, но примеры, которые я видел, не дают мне информации, как сделать это в моем случае. Я очень новичок в asp mvc, и любая помощь будет принята с благодарностью.
ОБНОВЛЕНИЕ 2:
Очевидно, я что-то упустил. Я называю это на мой взгляд:
@Html.BeginView()
{
<table>
<tr>
<td ><label >test</label></td>
</tr>
</table>
}
Все, кажется, хорошо, у него даже есть intellisense. Но вывод в браузере следующий:
Omega.UI.WebMvc.Helpers.BeginViewHelper+MyView {
test
}
Это мой вспомогательный метод:
namespace Omega.UI.WebMvc.Helpers
{
public static class BeginViewHelper
{
public static IDisposable BeginView(this HtmlHelper helper)
{
helper.ViewContext.Writer.Write("<div data-bind=\"preventBinding: true\">");
helper.ViewContext.Writer.Write("<div data-viewId=\"test\">");
return new MyView(helper);
}
class MyView : IDisposable
{
private HtmlHelper _helper;
public MyView(HtmlHelper helper)
{
this._helper = helper;
}
public void Dispose()
{
this._helper.ViewContext.Writer.Write("</div>");
this._helper.ViewContext.Writer.Write("</div>");
}
}
}
}
и я зарегистрировал пространство имен в ~ / Views / web.config
<add namespace="Omega.UI.WebMvc.Helpers" />