【问题标题】:MVC partial view controller not running on loadMVC 部分视图控制器未在加载时运行
【发布时间】:2019-01-21 10:16:44
【问题描述】:

我正在尝试将 MVC 部分视图加载到模式弹出窗口中。弹出窗口包含一个下拉列表,我试图在加载视图时加载的 ActionResult 上填充该列表。问题是控制器代码没有运行。

我的代码如下——

查看:

<div id="modal_form_horizontal_addnote" class="modal fade">
<div class="modal-dialog modal-md">
    <div class="modal-content">
        <div class="modal-header bg-primary">
            <button type="button" class="close" data-dismiss="modal">&times;</button>
            <h5 class="modal-title">Add Note</h5>
        </div>

        @Html.Partial("AddNote", new IHD.Core.Models.CreateTicketNoteModel { TicketHeaderId = Model.Id })
    </div>
</div>

局部视图:

@model IHD.Core.Models.CreateTicketNoteModel


@using (Html.BeginForm("AddNote", "Ticket", FormMethod.Post))
{
@Html.HiddenFor(model => model.TicketHeaderId)
@Html.AntiForgeryToken()
<div class="row">
    <div class="col-md-12">
        <div class="tab-content">
            <div class="tab-pane active" id="highlighted-justified-tab1">

                <div class="form-group">
                    @Html.LabelFor(model => model.WorkType, htmlAttributes: new { @class = "control-label col-md-2" })
                    <div class="col-md-12">
                        @Html.DropDownListFor(model => model.WorkType, new SelectList(Model.WorkTypeOptions, "Key", "Value", Model.WorkType), new { @name = "select", @class = "form-control" })
                        @Html.ValidationMessageFor(model => model.WorkType, "", new { @class = "text-danger" })
                    </div>
                </div>
            </div>
            <div class="form-group">
                <div class="col-md-offset-2 col-md-10">
                    <input type="submit" value="Create" class="btn btn-default" />
                </div>
            </div>
        </div>
    </div>
</div>
}

控制器:

public ActionResult AddNotePhase(int id = 0, int taskId = 0)
    {
        CreateTicketPhaseNoteModel note = new CreateTicketPhaseNoteModel();
        note.TicketHeaderId = id;

        // Populate the work type dropdown list
        note.WorkTypeOptions.Add("", "-- Select a Work Type --");
        note.WorkTypes = _workTypeService.GetAll().ToList();
        foreach (var c in note.WorkTypes)
        {
            note.WorkTypeOptions.Add(c.Id.ToString(), c.Description);
        }

        //note.PhaseTask = taskId;

        return PartialView(note);
    }

【问题讨论】:

    标签: c# asp.net-mvc model-view-controller


    【解决方案1】:

    您的控制器代码没有受到影响,因为您将模型传递给局部视图而不是调用操作。您需要使用 @{Html.RenderAction();} 来使用适当的值调用您的操作。

    【讨论】:

    • 我只想补充一点,@dynmatt 可以使用更短的标记:@Html.Action("AddNotePhase", "Ticket")
    • @Phteven 是的,或者那个。我想这取决于个人喜好:)
    • @John 谢谢,它现在可以访问控制器,但是现在传递给控制器​​的 id 参数是 0。
    • 您是否正在传递 ID?以@{Html.RenderAction("Action", "Controller", new { id = model.Id });} 为例。
    • @dynmatt 你不需要IHD.Core.Models.CreateTicketNoteModel,只需要new {id = Model.Id}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多