У меня есть приложение для бритвы / mvc3. Я пытаюсь поместить 2 формы в одно представление, и у меня возникли проблемы с сохранением данных в обеих формах. Я добавил метод расширения, который изменяет информацию шаблона, добавляя префикс к идентификаторам полей. К сожалению, данные из входных данных вообще не сохраняются в сообщениях, и я не уверен, что еще мне нужно добавить к ним, чтобы данные сохранялись. Вот оно:
public static class ExtensionMethods
{
public static IDisposable BeginHtmlFieldPrefixScope(this HtmlHelper html, string htmlFieldPrefix)
{
return new HtmlFieldPrefixScope(html.ViewData.TemplateInfo, htmlFieldPrefix);
}
//this is an extension helper class for input id prefixes for the BeginHtmlFieldPrefixScope extension method
private class HtmlFieldPrefixScope : IDisposable
{
private TemplateInfo TemplateInfo;
private string previousHtmlFieldPrefix;
public HtmlFieldPrefixScope(TemplateInfo templateInfo, string htmlFieldPrefix)
{
TemplateInfo = templateInfo;
previousHtmlFieldPrefix = templateInfo.HtmlFieldPrefix;
templateInfo.HtmlFieldPrefix = htmlFieldPrefix;
}
public void Dispose()
{
TemplateInfo.HtmlFieldPrefix = previousHtmlFieldPrefix;
}
}
Я использую этот метод так:
@using (Html.BeginForm("LogIn","Account"))
{
using (Html.BeginHtmlFieldPrefixScope("LoginForm"))
{
<div>
<fieldset>
<legend>Account Information</legend>
<div class="editor-label">
@Html.LabelFor(m => m.UserName)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.UserName)
@Html.ValidationMessageFor(m => m.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.Password)
</div>
<div class="editor-field">
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)
</div>
<div class="editor-label">
@Html.CheckBoxFor(m => m.RememberMe)
@Html.LabelFor(m => m.RememberMe)
</div>
<p>
<input type="submit" value="Log On" />
</p>
</fieldset>
</div>
}
}
для изменения префиксов в идентификаторах поля ввода.
Спасибо за любую помощь