2012-12-06 67 views
2

我有強類型視圖,我想要獲取控制器中的數據。 這是我有:從控制器中的強類型視圖中獲取數據

@model WordAutomation.Models.Document 

@{ 
    ViewBag.Title = "Document"; 
} 

<h2>Document</h2> 

@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true) 

    <fieldset> 
     <legend>Document</legend> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.CaseNumber) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.CaseNumber) 
      @Html.ValidationMessageFor(model => model.CaseNumber) 
     </div> 

     <p> 
      <input type="submit" value="Create" /> 
     </p> 
    </fieldset> 
} 


@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
} 

然後,控制器我有這樣的:

[HttpPost] 
     public ActionResult Document(FormCollection formValue) 
     { 
      string test = formValue[0].ToString(); 
      return View(); 
     } 

但沒有數據出現。任何想法我做錯了什麼? 謝謝

+0

您能否添加您的完整視圖代碼? –

+0

@AliRizaAdiyahsi Merhaba AliRiza,請現在檢查:) – Laziale

+3

爲什麼你發佈模型而不是formCollection是這樣的:'public ActionResult Document(Document model)' –

回答

4

讓MVC爲您處理模型綁定。您可以簡單地傳遞視圖模型的實例,而不是將FormCollection傳遞給您的控制器。您的控制器動作改成這樣:

[HttpPost] 
public ActionResult Document(WordAutomation.Models.Document model) 
{ 
    string test = model.CaseNumber; 

    return View(model); // return your model back to the view to persist values 
} 

MVC會自動在你的FormCollection值綁定到WordAutomation.Models.Document你。然後,您可以簡單地將您的模型返回到POST後的視圖,以便在需要時保持輸入值(在示例中包括此內容)。

+0

MVC是如此簡單,我看起來更復雜:)。謝謝 – Laziale

+0

@Laziale我們都到過那裏; o)很高興你的問題被排序。 –

+0

我希望,我寫我的評論作爲答案:)我想也更復雜。 –

0

當強鍵入時,從視圖到控制器的數據非常容易。 您只需通過model.yourpropertyname獲取控制器中的數據即可。

代碼將是這個樣子的模型

[HttpPost] 
    public ActionResult Document(Document aDocumentModel) 
    { 
     string test = aDocumentModel.CaseNumber; 
     return View(); 
    } 

現在的數據是「字符串測試」可用,您可以使用它在那裏,它需要, 你需要 一件事告訴你控制器關於「文檔」模型的命名空間,所以您需要添加

using WordAutomation.Models;//Your Model's namespace here 

在控制器的命名空間部分。

希望它有幫助!

相關問題