Model view controller MVC 2-在创建动态表单的内部方法中使用HtmlHelper.BeginForm

Model view controller MVC 2-在创建动态表单的内部方法中使用HtmlHelper.BeginForm,model-view-controller,forms,html-helper,Model View Controller,Forms,Html Helper,我有这样一种方法: public MvcHtmlString RenderStuff(HtmlHelper<TModel> htmlHelper) { TagBuilder div = new TagBuilder("div"); //Dynamically add elements to form e.g. div.InnerHtml += System.Web.Mvc.Html.InputExtensions.TextBox(htmlHelper, "M

我有这样一种方法:

public MvcHtmlString RenderStuff(HtmlHelper<TModel> htmlHelper)
{
    TagBuilder div = new TagBuilder("div");

    //Dynamically add elements to form e.g.
    div.InnerHtml += System.Web.Mvc.Html.InputExtensions.TextBox(htmlHelper, "MyTextBox").ToHtmlString();


    return MvcHtmlString.Create(div.ToString());
}
请不要建议使用TagBuilder(“表单”)然后将这些项附加到上面——我使用的是MVC客户端验证,似乎需要使用Html.BeginForm——如果我想不出一种方法,我将把表单留在我的视图中,而不是花时间尝试破解验证,使其工作,因为它目前工作得非常好

非常感谢您的任何建议,提前感谢:-)

干杯
Rob

我睡了一觉,第二天早上就明白了这一点,这是任何想在将来这样做的人的答案:

您不能返回字符串,然后从视图中渲染它-返回void并在方法中渲染它,以便在渲染时htmlHelper ViewContext是当前/相关的:

public void RenderStuff(HtmlHelper<TModel> htmlHelper)
{
    TagBuilder div = new TagBuilder("div");

    using(htmlHelper.BeginForm()){

       //Dynamically add elements to form e.g.
       div.InnerHtml += System.Web.Mvc.Html.InputExtensions.TextBox(htmlHelper, "MyTextBox").ToHtmlString();

       htmlHelper.ViewContext.HttpContext.Response.Write(div.ToString());

    }
}
public void RenderStuff(HtmlHelper HtmlHelper)
{
标记生成器div=新标记生成器(“div”);
使用(htmlHelper.BeginForm()){
//动态地将元素添加到表单中,例如。
div.InnerHtml+=System.Web.Mvc.Html.InputExtensions.TextBox(htmlHelper,“MyTextBox”).ToHtmlString();
htmlHelper.ViewContext.HttpContext.Response.Write(div.ToString());
}
}
       using (htmlHelper.BeginForm())
        {
            div.InnerHtml += div.InnerHtml += System.Web.Mvc.Html.InputExtensions.TextBox(htmlHelper, "MyTextBox").ToHtmlString();

        }
public void RenderStuff(HtmlHelper<TModel> htmlHelper)
{
    TagBuilder div = new TagBuilder("div");

    using(htmlHelper.BeginForm()){

       //Dynamically add elements to form e.g.
       div.InnerHtml += System.Web.Mvc.Html.InputExtensions.TextBox(htmlHelper, "MyTextBox").ToHtmlString();

       htmlHelper.ViewContext.HttpContext.Response.Write(div.ToString());

    }
}