2010-05-13 91 views
1

我使用asp.net MVC2並具有基本的頁面,其中包括在表單中的局部視圖MVC2:驗證PartialView表格前提交頁面含有管窺

<% using (Html.BeginForm()) 
    { %> 
<% Html.RenderAction("partialViewActionName", "Controllername"); %> 

<input type="submit" value="Weiter" /> 

<% } %> 

當我提交表單時,httpPost我的頁面的動作被調用,並且在那之後我的偏查看httpPost行動 被稱爲

[HttpPost] 
public virtual ActionResult PagePostMethod(myModel model) 
{ 
    // here I should know about the validation of my partial View 
    // If partialView.ModelState is valid then 
    // return View("success"); 
    // else return View(model) 
} 

[HttpPost] 
public virtual ActionResult partialViewActionName(myModel model) 
{ 
    ModelState.AddModelError("Error"); 
    return View(model); 
} 

但正如我做驗證在我的部分查看httpPost方法(因爲我想用我的部分在幾個地方查看)我不能決定我的漏洞頁面是否有效。

有沒有人有想法我該怎麼做?在頁面 中擁有多個部分視圖,但在頁面操作方法中包含有關驗證的信息,這不是一項常見任務嗎?

非常感謝您的幫助!

回答

1

您的部分視圖方法將在頁面呈現時調用,而不是在發佈頁面時調用。當帖子完成時唯一將要調用的動作是BeginForm中指定的動作。驗證將發生在ModelBinder中 - 假設您正在爲您的模型使用DataAnnotations。在部分視圖中由輸入表示的模型的任何部分將與綁定期間的模型的其餘部分一起驗證。如果您正在手動處理驗證,那麼您需要驗證正在調用該帖子的操作中的模型的所有部分。

+0

感謝您的快速回答。我已經調試它,並且行動電話是: - 頁面獲取方法 - PartialView GET方法 然後我按提交 - 頁POST方法 - PartialView POST方法 我做在頁面返回查看() post方法。但是,應該調用GET PartialView Action,而不是POST Partial View Method,或者?將RenderAction放入提交中不是一個好主意嗎? – Pascal 2010-05-13 12:07:39

+0

@Pascal - 局部視圖動作的第二次調用是在頁面作爲後置動作的結果呈現時出現的。由於它來自POST事件,因此它將調用使用post方法屬性裝飾的方法版本。但是到了這個時候,這個帖子的動作就完成了。通常,您不會在視圖中呈現單獨的獲取/發佈版本。它通常是一個ChildActionOnly - 即只能調用呈現HTML片段,而不是通過請求實際調用。所有的驗證都必須在視圖呈現在郵件之前完成 – tvanfosson 2010-05-13 12:29:57

+0

好的,我明白了。但是,我不知道我能怎麼想。所以我想要做什麼:我在管理區域有一個設置面板。我想在註冊過程的頁面中使用相同的設置面板。所以我有不同的頁面,我想展示相同的局部視圖。但我在頁面上有不同的提交。註冊人將進入下一個視圖,設置頁面shell會進入索引頁面。我試圖在部分視圖中進行提交。但後來並沒有工作,因爲兒童行爲不能重定向。當我在我的頁面上提交時,我怎樣才能首先驗證局部視圖? – Pascal 2010-05-13 14:25:15