2013-10-17 54 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 
     }