ASP.NET MVC форма не будет публиковать - PullRequest
1 голос
/ 11 февраля 2010

У меня очень простой контроллер и представления для отображения и редактирования данных профиля пользователя.

Проблема в том, что форма не будет опубликована. Я не вижу проблемы ...

Код следующий:

<%= Html.ValidationSummary("Edit was unsuccessful. Please correct the errors and try again.") %>

<% using (Html.BeginForm()) {%>
<div>
    <fieldset>
        <p>
            <label for="Title">
                Title:</label>
            <%= Html.TextBox("Title", Model.Title) %>
            <%= Html.ValidationMessage("Title", "*") %>
        </p>
        <p>
            <label for="FirstName">
                FirstName:</label>
            <%= Html.TextBox("FirstName", Model.FirstName)%>
            <%= Html.ValidationMessage("FirstName", "*") %>
        </p>
        <p>
            <label for="LastName">
                LastName:</label>
            <%= Html.TextBox("LastName", Model.LastName)%>
            <%= Html.ValidationMessage("LastName", "*") %>
        </p>
    </fieldset>
    <fieldset>
        <legend>Contact with the Encephalitis Society</legend>
        <p>
            <label for="Contactable">
                Allow The Encephalitis Society to contact me (we will not contact you unless this
                is checked):</label>
            <%= Html.CheckBox("Contactable", Model.Contactable)%>
            <%= Html.ValidationMessage("Contactable", "*") %>
        </p>
        <p>
            <label for="SubscribeNewsletter">
                I would like to receive e-newsletters:</label>
            <%= Html.CheckBox("SubscribeNewsletter", Model.SubscribeNewsletter)%>
            <%= Html.ValidationMessage("SubscribeNewsletter", "*") %>
        </p>
        <p>
            <label for="wantMembershipInfoPackage">
                I would like more information about becoming a member of the Encephalitis Society:</label>
            <%= Html.CheckBox("wantMembershipInfoPackage", Model.IsMember)%>
            <%= Html.ValidationMessage("wantMembershipInfoPackage", "*")%>
        </p>
        <p>
            <label for="IsMember">
                I am already a member of the Encephalitis Society:</label>
            <%= Html.CheckBox("IsMember", Model.IsMember)%>
            <%= Html.ValidationMessage("IsMember", "*") %>
        </p>
        <p>
            <label for="wantToBeRegularDonor">
                I would like to make a regular donation to the Encephalitis Society:</label>
            <%= Html.CheckBox("wantToBeRegularDonor", Model.IsMember)%>
            <%= Html.ValidationMessage("wantToBeRegularDonor", "*")%>
        </p>
    </fieldset>
    <hr />
    <%=Html.ActionLink("Cancel (Return to My Page)", "MyPage", "Members", null, new { @class = "LinkButton LeftButton" })%>
    <input class="LinkButton RightButton" type="submit" value="Save" />
</div>
<% } %>

Контроллер выглядит следующим образом:

public class ProfileController : Controller
{

    WebProfile p = WebProfile.Current;
    Member member = new Member();

    // GET: Shows details of the Profile
    public ViewResult Show()
    {
        ViewData["CategoryRole"] = member.CategoryRoleUserFriendly;
        return View(p);
    }

    // GET: /Profile/New - displays a template to create the Profile
    public ViewResult New()
    {
        ViewData["SaveButtonText"] = "Next >>";
        return View(p);
    }

    // POST: /Profile/New
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult New(FormCollection formValues)
    {
        try
        {
            WebProfile.GetProfile(member.UserName);
            UpdateModel(p);
            return RedirectToAction("MyPage", "Members");
        }
        catch
        {
            ViewData["SaveButtonText"] = "Next >>";
            return View();
        }
    }

    // GET: /Profile/Edit - displays a template to create the Profile
    public ViewResult Edit()
    {
        ViewData["SaveButtonText"] = "Save >>";
        return View(p);
    }

    // POST: /Profile/Edit - displays a template to create the Profile
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Edit(FormCollection formValues)
    {
        try
        {
            WebProfile.GetProfile(member.UserName);
            UpdateModel(p);
            return RedirectToAction("Show");
        }
        catch
        {
            return View();
        }
    }
}

}

Что-нибудь выпрыгивает на тебя?

1 Ответ

4 голосов
/ 11 февраля 2010

Я решил это, и это такая крошечная проблема, что я подробно опишу ее здесь:

Проблема заключалась в пропущенной кавычке ("), следующим образом:

    <p class="Note>PLEASE NOTE: All items below are Optional</p>
<%= Html.ValidationSummary("Edit was unsuccessful. Please correct the errors and try again.") %>

<% using (Html.BeginForm()) {%>
<div>
    <fieldset>
        ...

Вы можете это заметить? Не волнуйся, мне потребовался день:

<p class="Note>...

Должно было быть:

<p class="Note">

Недостающей кавычки перед <% using (Html.BeginForm ())%> было достаточно, чтобы отменить действие POST формы. Не было ни ошибок, ни изменения цвета кода. Нет визуальной индикации. Ничего.

Запомни !:

Если ваша форма не публикуется, найдите искаженный html над строкой Html.BeginForm ().

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