Javascript 如何通过mvc4中的提交按钮传递自定义参数
大家好,我正在使用mvc4创建一个登录页面,其中登录凭据从数据库中获取。在数据库中,相关表格包含3列,即:用户ID、密码和合作伙伴ID。当用户输入其凭据并单击“提交”按钮时,如果登录成功,他将进入一个地址如下的页面:Javascript 如何通过mvc4中的提交按钮传递自定义参数,javascript,asp.net,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,Javascript,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,大家好,我正在使用mvc4创建一个登录页面,其中登录凭据从数据库中获取。在数据库中,相关表格包含3列,即:用户ID、密码和合作伙伴ID。当用户输入其凭据并单击“提交”按钮时,如果登录成功,他将进入一个地址如下的页面: http://localhost:58361/Home?result1=true 这是我的提交按钮代码: <input type="submit" value="Login" class="login_button" onclick="return validateLogi
http://localhost:58361/Home?result1=true
这是我的提交按钮代码:
<input type="submit" value="Login" class="login_button" onclick="return validateLoginPage()" />
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();
}
}
verify方法使用数据库验证登录凭据是否正确,并将字符串值“result”返回为true或false创建一个隐藏输入,保存您的值,如下所示:
http://localhost:58361/Home?result1=true?partnerid='somevalue'
<input type="hidden" value="XXX" name="refNameHere" />
假设我正确理解了您的问题,并且主索引的控制器方法如下所示
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 });
到
然后,您必须在HomeController上添加一个索引操作,以获取名为result1和partnerid的字符串参数,并且一切都应该正常运行如果我理解正确,您希望提交一个表单,指导用户
Home?result1=true?partnerid='somevalue'
我将其解释为使用null操作(默认为Index)进入主控制器,并始终传递result1=true,以及来自ViewData的partnerid
@using(Html.BeginForm(null, "Home", FormMethod.Get,
new { result1=true, partnerid='@(ViewData["somevalue"])' })) //for query string
警告:正如Karthik所指出的,此代码未经测试。更重要的是要说明这一点:您能否发布执行验证和构建链接的操作结果要澄清的是,您希望用户在提交其凭据并经过身份验证后最终到达所述URL?获取partnerid的地点/时间是在身份验证之后?@DaveA,如果数据敏感,最好使用POST而不是get。@Murali,我同意一般原则和最佳实践。在这种情况下,我试图毫无偏见地回应OP。这意味着查询字符串(Get)。但我同意你的观点。+1,我喜欢这种使用表单发布数据的方式。以前我有一个隐藏变量:(@Murali,我相信不同的方法可以满足不同的需求;)您的方法还减少了一个额外的DOM元素&响应大小:)我明白您的意图。我觉得可以改进以更好地满足OP问题。如果你想改进它,我很乐意投票支持。错过了这个。大的改进,不确定它是否完全符合OP,但我的也一样。继续努力@pmacnaughtonI感觉标题可能有点误导,如果用户在验证后最终到达所述URL,那么实际请求的是什么,并且partnerid也只能在验证后获得。我添加了我忘记的name属性。还要确保表单方法设置为GET。如果我没弄错你的问题,那就行了。
@using(Html.BeginForm(null, "Home", FormMethod.Get,
new { result1=true, partnerid='@(ViewData["somevalue"])' })) //for query string