Html.BeginForm - >传递?myparam =某事要行动 - 总是空的

时间:2015-01-15 12:19:32

标签: asp.net-mvc model-view-controller url-parameters

我有一个部分视图,如下所示

  @using (Html.BeginForm("SignIn", "Account", FormMethod.Post, new { ReturnUrl = ViewBag.ReturnUrl], role = "form" }))

用于登录我的网站。

我喜欢我的用户可以打电话 http://example.com/Account/SignIn?ReturnUrl=somecontroller

但我的帖子数据从不包含添加的参数

我的GETAction看起来像

 public ActionResult SignIn(string ReturnUrl)
    {
        ViewBag.ReturnUrl = ReturnUrl;
        return View();
    }

我的PostAction看起来像

 public ActionResult SignIn(SignInModel model, string ReturnUrl)

ReturnUrl始终为null - 因为表单不发布我的参数。

如何让它发布参数?

1 个答案:

答案 0 :(得分:0)

您使用的是错误版本的BeginForm方法。试试这个:

SignIn.cshtml:

@using (Html.BeginForm("SignIn", "Second", new { ReturnUrl = ViewBag.ReturnUrl, role = "form" }, FormMethod.Post, null))
{
    @ViewBag.ReturnUrl

    <input type="submit" value="ok" />
}

控制器:

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

namespace MvcApplication2.Controllers
{
    public class SecondController : Controller
    {
        //
        // GET: /Second/

        public ActionResult SignIn(string ReturnUrl)
        {
            ViewBag.ReturnUrl = ReturnUrl;
            return View();
        }

        [HttpPost]
        public ActionResult SignIn(SignInModel model, string ReturnUrl)
        {
            ViewBag.ReturnUrl = ReturnUrl;
            return View();
        }
    }
}

无论如何,我不知道你为什么使用路线值而不只是在表格中定义一些字段......