2013-10-17 81 views
0

我們有動作列表鏈接提交ActionLink的一種形式mvc4

管窺

@foreach (var item in Model.Regions) { 
    <tr> 

    <td> 
     @Html.DisplayFor(modelItem => item.RegionName) 
    </td> 

    <td> 
     <input type="submit" value="Select" /> 
    </td> 

    @Html.HiddenFor(modelItem => Model.Id) 
</tr> 
} 
</table> 

我認爲這是不這樣做的正確的方式,但如果你能指出我在正確的方向,將不勝感激。我想這個數據提交到現有的形式

地區查看

@using (Html.BeginForm()){ 
<fieldset> 
    @Html.Partial("_RegionsPartial"); 
<legend>Create new region</legend> 
<ol> 
    <li>@Html.LabelFor(m => m.RegionName)</li> 
    <li>@Html.EditorFor(m => m.RegionName)</li> 
</ol> 
    <input type="submit" value="Next" /> 
    @Html.HiddenFor(model => model.RegionId) 
</fieldset> 
} 

所以,你可以提交新的或提交一個現有的。我不知道如何獲得現有的ID到我的模型。這裏是控制器:

public ActionResult Region() 
    { 
     var model = new WizardModel(); 
     var getRegions = _facade.FetchRegion(); 
     model.Regions = getRegions; 
     return View(model); 
    } 


    [HttpPost]   
    public ActionResult Region(WizardModel model) 
    { 
     if (model.RegionName != null) 
     { 
      var newRegion = _facade.CreateRegion(model.RegionName); 
      model.RegionId = newRegion.Id; 
     } 
     else 
     { 
      model.RegionName = _facade.FetchRegion(model.RegionId).RegionName; 
     } 
     TempData["suburbModel"] = model; 
     return RedirectToAction("Suburb"); 
    } 

感謝您抽出寶貴時間

+0

'model.RegionName = _facade.FetchRegion(model.RegionId).RegionName;'這行不工作? – WannaCSharp

回答

1

所以,我的繼承人傳遞模型的實例的實例。我有很多課程的視圖,所以我需要點擊一個按鈕並觸發一個動作,這樣就可以讀取所有課程的數據(包括相關的ID)。所以,最後我帶着我需要的隱藏字段的實例。:)

我的課程模式...

public class CourseModel 
    { 
     public int RecordId { get; set; } 
     public string StudentNameField { get; set; } 
     public string SubjectField { get; set; } 
     public string CatalogField { get; set; } 
     public string SectionField { get; set; } 
     public string InstrNameField { get; set; } 
     public string MtgStartField { get; set; } 
     public string MtgEndField { get; set; } 

    } 

我主要看...在視圖中被稱爲「CourseList」文件夾

<div id="container">   
<div class="selectLabel">Select a Course:</div><br /> 
@foreach (var item in Model) 
{   
    @Html.DisplayFor(model=>item) 
} 
</div>   

我的顯示模板 - 它是Shared \ DisplayTemplates中名爲「CourseModel」的視圖...對於您的顯示模板,您可以爲現有的&新建立獨特模型。在顯示模板中使用「現有」模型,它會產生多種形式,每種形式都使用按鈕type = submit來提交帶有模型實例的表單。使用CSS來模擬按鈕,如鏈接。如果您仍然需要使用actionlink,請將iD作爲params之一。

@using LecExamRes.Helpers 
@model LecExamRes.Models.SelectionModel.CourseModel 
@using (Html.BeginForm("CourseList", "Home", null, FormMethod.Post)) 
{ 
<div class="mlink"> 
    @Html.AntiForgeryToken() 
    @Html.EncryptedHiddenFor(model => model.RecordId) 
    @Html.EncryptedHiddenFor(model => model.CatalogField) 
    @Html.EncryptedHiddenFor(model => model.SectionField) 
    @Html.EncryptedHiddenFor(model => model.SubjectField) 
    @Html.EncryptedHiddenFor(model => model.InstrNameField) 
    @Html.EncryptedHiddenFor(model => model.MtgStartField) 
    @Html.EncryptedHiddenFor(model => model.MtgEndField) 
    <p> 
     <input type="submit" name="gbtn" class="groovybutton"  value="@Model.SubjectField - @Model.CatalogField - @Model.SectionField : @Model.InstrNameField"> 
    </p> 
</div> 
} 

我的控制器,Courselist [POST]動作...

[ValidateAntiForgeryToken] 
    [HttpPost] 
    public ActionResult CourseList(SelectionModel.CourseModel model) 
    { 
     //....do something with my model 
     }