2015-10-04 42 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不是選項的情況下通過數據庫驗證。

希望這對你有所幫助...