asp.net-mvc - 无法将数据从 View 传递到 Controller

标签 asp.net-mvc

我开始使用 MVC,目前正在开发一个应用程序。当我尝试将一些数据从 View 传递到 Controller 操作时,我遇到了一个小问题。

这是我的模型:

public class TicketIndexModel
{
    public IEnumerable<Ticket> ticketList { get; set; }
    public Ticket newTicket { get; set; }

}

这是我的 Controller 操作:

public ActionResult AddTicket(Ticket ticket)
    {
        string user = User.Identity.Name;
        TicketDetail ticketDetails = new TicketDetail();

        if (ModelState.IsValid)
        {
            ticket.DateCreated = DateTime.Now;
            ticket.Status = "submitted";
            ticket.UserName = user;
            db.Tickets.Add(ticket);
            db.SaveChanges();

         //some other stuff



            return RedirectToAction("Index");
        }

在 View 中,首先我显示所有门票,然后我有一个小表格来添加新门票。这就是表单的样子。

@using (Html.BeginForm("AddTicket","Ticket",FormMethod.Post)) {

    <div class="editor-label">
        @Html.LabelFor(model => model.newTicket.Title)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.newTicket.Title)
        @Html.ValidationMessageFor(model => model.newTicket.Title)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.newTicket.Description)
    </div>
    <div class="editor-field">
        @Html.TextAreaFor(model => model.newTicket.Description, new { rows= "8",cols="2"})
        @Html.ValidationMessageFor(model => model.newTicket.Description)
    </div>

      <p>
        <input type="submit" value="Submit" />
    </p>

}

我面临的问题是,当我尝试添加新票证时,票证参数始终为空,因此 If(ModelState.Isvalid) <- 始终为 false,因此我无法向数据库添加新票证。

有人知道为什么吗?

稍后编辑:

我的模型现在是:

public IPagedList<Ticket> ticketList { get; set; }

    //[Required(ErrorMessage ="Title required")]
    [Display(Name = "Title")]
    public string TicketTitle { get; set; }

    //[Required(ErrorMessage="Description Required")]
    [Display(Name = "Description")]
    public string TicketDescription { get; set; }

我现在的方法是:

    [HttpPost]
    public ActionResult AddTicket(TicketIndexModel newTicket)
    {
        string user = User.Identity.Name;     

        Ticket ticket = new Ticket();

        if (ModelState.IsValid)
        {
            ticket.Title = newTicket.TicketTitle;
            ticket.Description = newTicket.TicketDescription;
            ticket.DateCreated = DateTime.Now;
            ticket.Status = "open";
            ticket.UserName = user;
            db.Tickets.Add(ticket);
            db.SaveChanges();

我现在遇到的问题如下:

如果在模型中,我注释[必需]我可以添加票证,如果没有,在 Controller 中,每次提交新票证时,签名中的 newTicket 为空。但是, Controller 输入 if(ModelState.IsValid) 并且我在 db.SaveChanges(ticket) 处收到错误。

我需要服务器端和客户端验证。你能帮我吗?

最佳答案

您的 AddTicket 方法应如下所示

[HttpPost]
public ActionResult AddTicket(TicketIndexModel ticketIndexModel)

然后从传入的对象访问 newTicket。

关于asp.net-mvc - 无法将数据从 View 传递到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16045701/

相关文章:

asp.net-mvc - REST API 嵌套资源应该由哪个 Controller 处理?

.net - 在 MVC 2 应用程序中创建非阻塞进程

c# - 如何使用类(带有类列表)作为数据库,使用 MVC5 创建/索引操作

asp.net - 在 ASP.NET Web 应用程序中存在未处理的异常是否可以接受?

c# - 为什么 SignalR 会多次更改函数?

asp.net-mvc - ASP.NET MVC2 路由约束 - 可选的数字 ID 参数

c# - 将外部页面加载到我的网页中更改布局

c# - 从数据库中获取具有特定列的数据 MVC4

c# - 使用模型将数组从 Controller 传递到 View

javascript - 为什么全局变量没有改变?