我知道similar question already asked,但我的问题与保存页面状态有关。为简单起见我使用相同的模型。假设我有以下模型:
public class LoginRegisterViewModel
{
public string LoginUsername { get; set; }
public string LoginPassword { get; set; }
public string RegisterUsername { get; set; }
public string RegisterPassword { get; set; }
public string RegisterFirstName { get; set; }
public string RegisterLastName { get; set; }
}
我对两件事感兴趣:
1-我必须知道点击了哪个按钮
2-我必须保留两种表格数据。这意味着当用户已经为登录填充LoginUsername然后决定注册站点并单击注册按钮时,作为响应,两个表单状态都将被保存。
使用以下方法:
@model LoginRegisterViewModel
@using (Html.BeginForm("Login", "MemeberController", FormMethod.Post, new {})) {
@Html.LabelFor(m => m.LoginUsername)
@Html.TextBoxFor(m => m.LoginUsername)
@Html.LabelFor(m => m.LoginPassword)
@Html.TextBoxFor(m => m.LoginPassword)
<input type='Submit' value='Login' />
}
@using (Html.BeginForm("Register", "MemeberController", FormMethod.Post, new {})) {
@Html.LabelFor(m => m.RegisterFirstName)
@Html.TextBoxFor(m => m.RegisterFirstName)
@Html.LabelFor(m => m.RegisterLastName)
@Html.TextBoxFor(m => m.RegisterLastName)
@Html.LabelFor(m => m.RegisterUsername)
@Html.TextBoxFor(m => m.RegisterUsername)
@Html.LabelFor(m => m.RegisterPassword)
@Html.TextBoxFor(m => m.RegisterPassword)
<input type='Submit' value='Register' />
}
我将知道点击了哪个按钮。但我不知道其他形式有哪些信息。如果我只使用单一表格,我不知道哪个按钮已经提交了表格(我知道我可以使用Request.Form [&#34; buttonvalue&#34;],但我认为这不是干净的解决方案)
在最坏的情况下,模型可能包含有关一个网格的信息:
public class LoginRegisterViewModel
{
public string LoginUsername { get; set; }
public string LoginPassword { get; set; }
public string RegisterUsername { get; set; }
public string RegisterPassword { get; set; }
public string RegisterFirstName { get; set; }
public string RegisterLastName { get; set; }
public List<RowModel> Rows {get; set;}
}
当我发送登录表单时,我不知道我页面中的当前页面,排序和过滤器。 MVC将如何帮助解决这些问题?
更新1:
由于某些原因,我不想使用JavaScript和jquery。
答案 0 :(得分:0)
如果我正确理解您的问题,以下是可以帮助您的要点:
1)请注意,您只能访问您提交的表单中的表单字段数据。
2)形成你提到的场景,如果你可以使用jQuery / Ajax发布,那么点击登录按钮只发布相关的输入数据,点击注册按钮发布两个表格.Eg:
var dataToPost = $("#frmLogin, #frmRegister").serialize();// Onclick of Register button posting both form data
注意:要处理上述问题,您需要有一个可以同时保存登录和放大的视图模型。注册信息。
3)根据您提出的问题中的表单结构,作为一种好的做法,只需在登录提交或注册按钮单击时检查您的数据库的凭证信息。
4)检查数据状态的更好方法是通过验证数据库,以防会话/缓存不是一个选项。
希望这能帮到你......