MVC中的HTTPPOST没有返回视图

时间:2014-04-26 14:54:10

标签: asp.net-mvc

使用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" />
}

3 个答案:

答案 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) 

希望它会对你有所帮助。