0

我正在尝试将我的模型从视图传递到控制器的强类型。我的观点是强类型的。当在控制器中调用“保存”操作方法时,我以某种方式在属性值中得到“空”。我正在使用Asp.Net MVC 3.

这就是我的视图的样子:

@model MvcApplication2.Models.Event
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <title>AddNew</title>
</head>
<body>
    @using(Html.BeginForm("Save","Event",FormMethod.Post, Model))
    {
        <div>
            <p>@Html.LabelFor(m=>m.EventName) @Html.TextBoxFor(m=>m.EventName)</p>
            <p>@Html.LabelFor(m=>m.Venue) @Html.TextBoxFor(m=>m.Venue)</p>
            <p>@Html.LabelFor(m=>m.StartTime) @Html.TextBoxFor(m=>m.StartTime)</p>
            <p>@Html.LabelFor(m=>m.EndTime) @Html.TextBoxFor(m=>m.EndTime)</p>
            @Html.ActionLink("Save Event", "Save")
        </div>
        }
</body>
</html>

这就是我的EventController样子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcApplication2.Models;

namespace MvcApplication2.Controllers
{
    public class EventController : Controller
    {

        public string Save(Event eventModel)
        {
           //Here eventModel.EventName and rest of the properties are null.

            return "Saved";
        }

    }
}

这是模型的样子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MvcApplication2.Models
{
    public class Event
    {
        public string EventName { get; set; }
        public string Venue { get; set; }
        public string StartTime { get; set; }
        public string EndTime { get; set; }
    }
}
4

2 回答 2

1

ActionLinks 不提交表单。改变:

@Html.ActionLink("Save Event", "Save")

<input type="submit" value="Save">

[HttpPost]此外,如果您添加到您的方法中,这会更加明显。

    [HttpPost]
    public string Save(Event eventModel)
    {
       //Here eventModel.EventName and rest of the properties are null.

        return "Saved";
    }
于 2012-07-26T16:33:59.137 回答
1

ActionLinkhelper 方法呈现一个锚标记,它是一个链接。它不会提交表单。正如 Erik 所提到的,您需要在表单中添加一个提交按钮。

如果您仍然想保留链接而不是提交按钮,您可以使用一些 javascript 代码来提交表单

<script type="text/javascript"> 

    $(function(){
      $("#Save").click(function(){
         $(this).closest("form").submit();        
      });
    });

</script>
于 2012-07-26T16:48:04.603 回答