2015-10-04 71 views
-1

我知道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 [“buttonvalue”],但我认为它不是干净的解决方案)。

在最坏的情况下,它是可能的模型包含一个网格信息:

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

你不想创建一个包含所有模型和发布的包装模型吗?这样你就可以将所有的数据放在一个地方 – mahlatse

+0

你有两个独立的表格,可以回到2个独立的方法。您知道哪个按钮被点击哪个操作方法被击中。你无法获得其他形式的值。你需要2个独立的模型。当你在VS中创建一个新项目时,我建议你在'AccountController'中研究代码,以了解你应该做什么。 –

回答

0

如果我正确理解你的问题,以下是可以帮助你几点:

1)请注意,你将只能访问从表单,您提交表单字段数据。

2)构成你所提到的情况下,如果你可以使用jQuery/AJAX张贴然后登录按钮的点击后只有输入相关数据,并注册按钮后点击两forms.Eg:

var dataToPost = $("#frmLogin, #frmRegister").serialize();// Onclick of Register button posting both form data

注意:要处理上述问题,您需要有一个视图模型,可以同时保存登录&注册信息。

3)根据你在问题中提出的表单结构,作为一个良好的习惯,总是检查你的db的凭证信息,无论是登录提交还是注册按钮单击。

4)检查数据状态的更好方法是在session/cache不是选项的情况下通过数据库验证。

希望这对你有所帮助...