Создание моей первой страницы создания с ASP.Net MVC2 - PullRequest
4 голосов
/ 30 июля 2010

Я пытаюсь создать свое первое приложение MVC. У меня есть очень простая таблица: команды: ID, имя. Я создал приложение MVC хорошо, и таблица указана. Ниже находится представление «Создать». Когда он запускается, я получаю сообщение: Требуется значение. Можете ли вы помочь (извините, это очень просто).

Просмотр create.aspx:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"     Inherits="System.Web.Mvc.ViewPage<GettingStarted.Models.Team>" %>

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

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

<h2>Create</h2>

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

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

    <fieldset>
        <legend>Fields</legend>
        <p>
            <label for="Name">Name:</label>
            <%= Html.TextBox("Name") %>
            <%= Html.ValidationMessage("Name", "*") %>
        </p>
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>

<% } %>

<div>
    <%=Html.ActionLink("Back to List", "Index") %>
</div>

</asp:Content>

с контроллером teamcontroller:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using GettingStarted.Models;
using DB = GettingStarted.Models.GettingStartedDataContext;

namespace GettingStarted.Controllers
{
    public class TeamController : Controller
    {
        // other actions
        ...
        //
        // GET: /Team/Create

        public ActionResult Create()
        {
            return View();
        } 

        //
        // POST: /Team/Create

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Create(Team team)
        {

            if (ModelState.IsValid)
            {
                try
                {
                    var db = new DB();
                    db.Teams.InsertOnSubmit(team);
                    db.SubmitChanges();
                    return RedirectToAction("Index");
                }
                catch
                {
                    return View(team);
                }
            }
            return View(team);
        }

    }
}

Ответы [ 3 ]

2 голосов
/ 30 июля 2010

Представление «Создать» является строгим типом, поэтому укажите экземпляр модели представления:

public ActionResult Create()
{
    return View(new Team());
}

или

public ActionResult Create()
{
    return View((Team)null);
}
1 голос
/ 31 июля 2010

Возможно, проблема в аннотации для поля в модели. Вы проверили свою модель на что-то вроде:

public class Team {

   [Required(ErrorMessage = "A value is required")]
   public string whatEver {get; set;}

   ...
}
0 голосов
/ 30 июля 2010

Подсказка: также добавьте действие Create, которое принимает Team в качестве параметра, для обработки ошибок проверки.

public ActionResult Create(Team team)
{
    return View(team);
}

Также передача нулевого значения в форму создания не обязательна!Ваша проблема может быть где-то еще.Можете ли вы попробовать использовать

<%= Html.TextBoxFor(model => model.Name) %>
<%= Html.ValidationMessageFor(model => model.Name) %>

вместо

<%= Html.TextBox("Name") %>
<%= Html.ValidationMessage("Name", "*") %>

?

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