Почему моя форма не публикуется правильно? - PullRequest
0 голосов
/ 15 января 2012

Я работаю над запросами MVC POST / GET, но наблюдал странное поведение.

Моя форма публикуется после редактирования, нажав «Сохранить» в браузере, но когда я получил запрос, все атрибуты не были определены.CourseName, CourseCreditPts, Institute были равны нулю или нулям.

Код:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(tblCourse a_Course)
{
    // Retrieve existing object
    var CourseToBeSaved = _pr.FindCourseById(a_Course.CourseID);

    // without try-catch exception thrown
    try
    {
        TryUpdateModel(CourseToBeSaved);
    }
    catch (Exception e)
    {
        Console.WriteLine("{0} Exception caught.", e);
    }

    // Save
    _pr.Save();

    return View();
}

и файл .aspx, содержащий код:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<DataWarehouse.tblCourse>" %>
<%@ Import Namespace="DataWarehouse.Helpers" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Edit
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

   <h2>Edit Course</h2>   

    <% using (Html.BeginForm()) {%>
        <%: Html.ValidationSummary(true) %>
        <%: Html.HiddenFor(x=>x.CourseID) %>
        <table>
            <tr>
                <td><b>Institute</b></td>

                <td><%: Html.DropDownList("InstituteID")%> <%: Html.ValidationMessageFor(x=>x.InstituteID) %></td>
            </tr>
            <tr>
                <td><b>CourseName</b></td>
                <td><%: Html.TextBox("EditAbleCourseName")%> <%: Html.ValidationMessageFor(x => x.CourseName)%></td>
            </tr>
            <tr>
                <td><b>CreditPoints</b></td>
                <td><%: Html.TextBox("EditAbleCreditPoints")%> <%: Html.ValidationMessageFor(x => x.CreditPts)%></td>
            </tr>
            <tr>
                <td><b>Status</b></td>
                <td><%: Html.DropDownList("EditAbleStatus")%> <%:    Html.ValidationMessageFor(x => x.Status)%></td>
            </tr>

        </table>            
        <p>
            <input type="submit" value="Save" />
        </p>

    <% } %>

</asp:Content>

1 Ответ

0 голосов
/ 15 января 2012

Вы не опубликовали, как определяется класс tblCourse, но из ваших валидаторов кажется, что у него есть свойство CourseName.Вы назвали текстовое поле, которое должно содержать название курса EditAbleCourseName, и это ваша проблема.Для привязки модели по умолчанию вы должны присвоить входным данным то же имя, что и у свойства класса.Это касается и других ваших свойств.

Поэтому попробуйте переименовать ваши входные данные в то же имя, что и свойства вашего класса.

<%: Html.TextBox("CourseName")%>

и т. Д. *

...