Почему данные не сохраняются при изменении ViewData.TemplateInfo.HtmlFieldPrefix? - PullRequest
0 голосов
/ 28 ноября 2011

У меня есть приложение для бритвы / 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>
    }
}

для изменения префиксов в идентификаторах поля ввода. Спасибо за любую помощь

1 Ответ

0 голосов
/ 28 ноября 2011

ViewData не сохраняется в сообщениях.Вам нужен либо TempDate (действует для следующего запроса), либо Session здесь (или Cache)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...