我是ASP.NET MVC的新手。我试图在按钮点击时更新模型但没有成功:每次按下按钮都会调用HttpGet控制器方法。
这是我的标记
@model DataInterface.Model.Entry
<button onclick="location.href='@Url.Action("Survey")'">Finish survey</button>
这是控制器代码
[HttpGet]
public ActionResult Survey()
{
var entry = new Entry();
return View(entry);
}
[HttpPost]
public ActionResult Survey(Entry newEntry)
{
// save newEntry to database
}
当我点击按钮时,调用HttpGet方法。为什么呢?
成为一名新秀不好 谢谢大家!
答案 0 :(得分:1)
如果您在未明确指定URL
的情况下访问HTTP method
,则ASP.NET MVC
会假设GET
请求。要更改此设置,您可以添加表单并发送:
@using (Html.BeginForm("Survey", "Controller", FormMethod.Post))
{
<input type="submit" value="Finish survey" />
}
如果您这样做,将调用您的POST
方法。但是,Entry
参数将为空,因为您未指定与请求一起发送的任何值。最简单的方法是指定输入字段,例如文本输入,下拉列表,复选框等。
@using (Html.BeginForm("Survey", "Controller", FormMethod.Post))
{
@Html.TextBoxFor(m => m.Title)
<input type="submit" value="Finish survey" />
}
如果您将对象存储在服务器上的某个位置并且只想通过将其写入数据库或更改其状态来完成它,则可以传递对象的Id
(或一些临时Id) post请求并使控制器方法仅与Id:
@using (Html.BeginForm("Survey", "Controller", FormMethod.Post))
{
@Html.HiddenFor(m => m.Id)
<input type="submit" value="Finish survey" />
}
[HttpPost]
public ActionResult Survey(Entry newEntry)
{
// newEntry.Id will be set here
}
答案 1 :(得分:0)
@using (Html.BeginForm("Survey", "<ControllerName>", FormMethod.Post))
{
<input type="submit" value="Finish survey" />
}
答案 2 :(得分:0)
您必须声明表格
@model DataInterface.Model.Entry
@using (Html.BeginForm("action", "Controlleur", FormMethod.Post, new {@class = "form", id = "RequestForm" }))
{
<input type="submit" value="Finish survey" />
}