我正在尝试将我的模型从视图传递到Controller。我的观点是强类型的。不知何故,当在控制器中调用“保存”操作方法时,我在属性值中得到“null”。我正在使用Asp.Net MVC 3
。
这就是我的View的样子:
@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; }
}
}
答案 0 :(得分: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";
}
答案 1 :(得分:1)
ActionLink
辅助方法呈现锚标记,这是一个链接。它不会提交表格。如Erik所说,您需要在表单中提交一个提交按钮。
如果您仍想保留链接而不是提交按钮,可以使用一些javascript代码提交表单
<script type="text/javascript">
$(function(){
$("#Save").click(function(){
$(this).closest("form").submit();
});
});
</script>