如何通过mvc4中的提交按钮传递自定义参数

时间:2013-02-08 06:08:13

标签: javascript asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

大家好我正在使用mvc4创建登录页面,其中登录凭据是从数据库中提取的。在数据库中,相关表格包含3列:用户ID 密码 partnerid 。当用户输入他的凭据并单击“提交”按钮时,如果登录成功,他将被带到一个地址如下的页面:

http://localhost:58361/Home?result1=true

这是我的提交按钮代码:

<input type="submit" value="Login" class="login_button" onclick="return validateLoginPage()" />

这里validateLoginPage是一个js函数,它检查是否有任何输入字段留空。

我的要求是,点击“提交”按钮,用户重定向到的页面地址将显示如下:

http://localhost:58361/Home?result1=true?partnerid='somevalue'

partnerid值取自数据库并存储在ViewData

如何实现这一目标?提前致谢

修改

这是提交按钮的动作结果

    public ActionResult Index(LoginModel model,string res)
    {
        LoginUser = model.Userid;
        LoginPassword = model.Password;
        verify(LoginUser, LoginPassword);
        res = result;
        if (res == "true")
        {
            return RedirectToAction("Index", "Home", new { result1 = result });
        }
        else
        {
            ViewData["alert"] = "The Login Credentials are Incorrect";
            return View();
        }
    }

验证方法向数据库验证登录凭据是否正确,并将字符串值“result”返回为true或false

3 个答案:

答案 0 :(得分:2)

如果我理解正确,您需要提交一个指导用户的表单

Home?result1=true?partnerid='somevalue'

我将其解释为使用null操作进入Home Controller(默认为Index)并始终传递result1 = true,以及来自ViewData的partnerid

    @using(Html.BeginForm(null, "Home", FormMethod.Get, 
new { result1=true, partnerid='@(ViewData["somevalue"])' })) //for query string

警告:正如Karthik所指出的那样,此代码未经测试。更多的是要证明这一点:

答案 1 :(得分:0)

创建一个隐藏的输入,保存您的值,如下所示:

<input type="hidden" value="XXX" name="refNameHere" />

答案 2 :(得分:0)

假设我已正确理解您的问题,并且Home Index的控制器方法看起来像这样

public ActionResult Index(int partnerid)
{
    ViewBag.PartnerId = partnerid;
    return View();
}

在登录方法

中执行此操作应该没问题
public ActionResult Login()
{
    // Authentication stuff goes here
    return RedirectToAction("Index", "Home", new { partnerid = 1 });
}

由于您添加了处理登录的操作的代码,这简化了我的编辑。 您所要做的就是从数据源获取partnerid,将其放入字符串并将其包装在''然后更改

return RedirectToAction("Index", "Home", new { result1 = result });

return RedirectToAction("Index", "Home", new { result1 = result, partnerid = partnerId });

然后你必须在你的HomeController上添加一个Index动作来获取名为result1和partnerid的字符串参数,一切都应该工作