1

アクションリンクのリストがあります

部分図

@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");
    }

お時間を割いていただきありがとうございます

4

1 に答える 1

2

モデルのインスタンスを渡す例を次に示します。私は多くのコースのビューを持っているので、ボタンをクリックしてアクションを起動する必要があります。これにより、クリックされたコースのすべてのデータ (関連する 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; }

    }

私のメインビュー...Viewsフォルダーの「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」というビューです。ディスプレイ テンプレートについては、既存および新規の固有のモデルを作成できます。displaytemplate で「既存の」モデルを使用すると、複数のフォームが生成され、それぞれがボタン type=submit を使用してモデル インスタンスでフォームを送信します。CSS を使用して、ボタンをリンクのようにモデル化します。それでも actionlink を使用する必要がある場合は、iD をパラメーターの 1 つとして使用してください。

@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
       }
于 2013-10-17T03:12:46.643 に答える