2013-06-12 92 views
0

我有一個視圖名稱「編輯」:郵政值到控制器

@model EMMS.ViewModels.MaintenanceViewModel 

@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true) 
    <fieldset style="width: 800px;"> 
     <legend>Maintenance Details</legend> 
     <div class="editor"> 
      @Html.LabelFor(model => model.EquipmentID) 
      @Html.TextBoxFor(model => model.EquipmentID, new { style = "width: 200px;" }) 
      @Html.ValidationMessageFor(x => x.EquipmentID) 
     </div> 
    </fieldset> 
    <div id="dialog-validate-user" style="display: none;"> 
     @Html.Partial("_ValidateUser") 
    </div> 
} 

它包含了與下面的局部視圖填充一個jQuery UI的對話框:

@{ 
    ViewBag.Title = "_ValidateUser"; 
} 

<h3>User Verification Required</h3> 
<p>Please enter your network login credentials.</p> 
@using (Html.BeginForm("Edit", "Maintenance", FormMethod.Post)) { 
    <div> 
     <p> 
      <span>User Name:</span> 
      @Html.TextBox("UserName") 
     </p> 
     <p> 
      <span>Password:</span> 
      @Html.Password("Password") 
     </p> 
    </div> 
} 

我想要將用戶名和密碼輸入的值傳遞迴維護控制器的編輯(發佈)操作結果。其行爲結果如下所示:

[HttpPost] 
public ActionResult Edit(MaintenanceViewModel maintenanceViewModel, string UserName, string Password) 
{ 
} 

當我斷點ActionResult時,UserName和Password始終爲空。它們不是視圖模型的一部分,只是我需要傳遞給編輯方法的參數。

任何幫助表示讚賞

+0

在生成的HTML輸出中,您的用戶名和密碼文本框的實際名稱是什麼? –

+0

以下是輸出:

User Name

Password

steveareeno

+0

這看起來對我來說很合適。您能否驗證數據實際上是從瀏覽器發送的?你可以檢查HTTP請求來驗證嗎? –

回答

3

重要:

當您在該div使用jQuery UI的對話框,它是從表單中刪除。這就是爲什麼他們是空的。

您可以在我的jsFiddle here中看到。

如果我是你,我會分開表格,以便它們不嵌套。

編輯觀點:

@model EMMS.ViewModels.MaintenanceViewModel 

@using (Html.BeginForm()) 
{ 
    @Html.ValidationSummary(true) 
    <fieldset style="width: 800px;"> 
     <legend>Maintenance Details</legend> 
     <div class="editor"> 
      @Html.LabelFor(model => model.EquipmentID) 
      @Html.TextBoxFor(model => model.EquipmentID, new { style = "width: 200px;" }) 
      @Html.ValidationMessageFor(x => x.EquipmentID) 
     </div> 
    </fieldset> 
} 
<div id="dialog-validate-user" style="display: none;"> 
    @Html.Partial("_ValidateUser") 
</div> 

_ValidateUser部分:

@{ 
    ViewBag.Title = "_ValidateUser"; 
} 

<h3>User Verification Required</h3> 
<p>Please enter your network login credentials.</p> 
@using (Html.BeginForm("Login", "Maintenance", FormMethod.Post)) 
{ 
    <div> 
     <p> 
      <span>User Name:</span> 
      @Html.TextBox("UserName") 
     </p> 
     <p> 
      <span>Password:</span> 
      @Html.Password("Password") 
     </p> 
    </div> 
} 

控制器:

[HttpPost] 
public ActionResult Login(string UserName, string Password) 
{ 
    // do something here with the login 
} 

MVC的美是恰當的分離。

請注意,自定義ViewModel的要點是將這些字段組合在一起。

此外:

才能上的要求是什麼一點點的信息後,在這裏最好的解決辦法是去除部分的形式和用戶名和密碼添加到視圖模型:)

+0

您的意思是控制器中的局部視圖有不同的操作結果?如果是這樣,我仍然需要將用戶名/密碼傳遞給編輯方法post actionresult。基本上,我有一個要求在保存數據之前重新認證用戶,用戶名必須與數據一起保存,審計功能的種類 – steveareeno

+0

是的,這就是我的意思。您可以像我所顯示的那樣使用分隔,或者使用viewModel的用戶名和密碼部分。 – technicallyjosh

+0

@steveareeno我編輯了我的答案。 – technicallyjosh