使用httppost属性调用时不会返回view的简单操作方法。但是post完全正常工作。就在2天前,我开始学习MVC。出于学习目的,我做了一个简单的动作来返回一个带有httppost的视图,但它有用。我也在论坛上搜索,但是得到了明确的想法..任何人都可以解释..
[HttpPost]
public ActionResult login(LoginModel loginmodel)
{
if (ModelState.IsValid)
{
}
return View();
}
我的观点:
<h2>login</h2>
@using (Html.BeginForm())
{
<div class="editor-label">
@Html.LabelFor(model => model.username)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.username)
@Html.ValidationMessageFor(model => model.username)
</div>
<input type="submit" value="Login" />
}
答案 0 :(得分:0)
您需要将viewmodel返回到视图。
[HttpPost]
public ActionResult login(LoginModel loginmodel)
{
if (ModelState.IsValid)
{
// to do : check login and redirect
}
// validation failed. let's return to the view.
return View(loginmodel);
}
答案 1 :(得分:0)
根据@ Shyju的回答,您提出表示您在提交表单时收到404错误消息。这向我表明表单的操作没有正确的URL。这并不奇怪,因为ASP.NET MVC框架正在根据一些假设选择URL。
更改视图中的from声明,以明确定义HttpPost登录操作的操作名称和控制器名称。
@using (Html.BeginForm("login", "MyControl"))
将 "MyControl"
替换为控制器的实际名称。
答案 2 :(得分:0)
您应该在Form中定义Controller和Action名称,如
@using (Html.BeginForm("Action", "Controller"))
然后你需要在视图中返回模型,如
return view(model)
希望它会对你有所帮助。