【问题标题】:MVC 4 Controller will not show viewMVC 4 控制器不会显示视图
【发布时间】:2013-08-28 18:36:36
【问题描述】:

我有一个带有 ActionResult 的控制器,我在初始构建后添加了一个名为 SubAlertModal 的控制器

     [HttpPost]
public ActionResult SubAlertModal(int alertid)
{

    var SubAlerts = from sa in db.csSubAlerts
                    where sa.AlertID == alertid
                    select sa;

  //  csAlert cssubalert = db.csAlerts.Find(alertid);


 //   return View();

   return Request.IsAjaxRequest() ? PartialView(SubAlerts) :   

       PartialView(SubAlerts);

}

在 Index.cshtml 页面上,我添加了一个 HTML.ActionLink,如下所示

@foreach (var item in Model) {
<tr>
    <td>
        @Html.ActionLink("Sub_Alert", "SubAlertModal", new { id = item.AlertID }, new { 
     @class = "ModalOpener" })
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Routes)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Issue)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Detour)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.DateEntered)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.FullName)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.SendEmail)
    </td>
    <td>
        @Html.ActionLink("Edit", "Edit", new { id = item.AlertID }, new {   
    @class="ModalOpener" }) |
        @Html.ActionLink("Details", "Details", new {id = item.AlertID }) |
        @Html.ActionLink("Delete", "Delete", new { id = item.AlertID})
    </td>
</tr>
}

第一个问题是第一个。 当我单击列表中的 Sub_Alert 时,它给了我一个 404 错误。 网址是正确的。 控制器是否与视图不匹配。 这是我现在要在模态窗口或任何窗口中加载的视图 @model IEnumerable

@{
ViewBag.Title = "SubAlerts";
 }

     <h2>SubAlert</h2>
<div id="SubAlertModal" title="Sub Alert for the Alert">
This is a test modal
and it appears to be working !!

<table>
<tr>

    <th>
        @Html.DisplayNameFor(model => model.Issue)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.Detour)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.DateEntered)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.EnteredBy)
    </th>
    <th>
        @Html.DisplayNameFor(model => model.SendEmail)
    </th>
    <th></th>
 </tr>

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

    <td>
        @Html.DisplayFor(modelItem => item.Issue)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Detour)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.DateEntered)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.FullName)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.SendEmail)
    </td>

</tr>
}

</table>



</div>

谢谢

【问题讨论】:

  • 您的控制器名称是什么?家?如果不是 Home,则需要明确输入控制器名称。
  • 我的控制器名称是 AlertController 并且我的所有其他操作都有效(创建、编辑、详细信息和删除) 现在我创建了名为 SubAlertModal(custom) 的新操作结果,但它仍应连接。当我从视图中单击转到控制器时,它进入 vs.

标签: asp.net-mvc asp.net-mvc-4


【解决方案1】:

如果您通过链接访问操作方法,那么 HTTP 动词是 GET,而不是帖子。

您的操作方法设置为仅响应 POST。

只需删除[HttpPost] 或将其更改为[HttpGet]

【讨论】:

  • 现在我得到这个错误?参数字典包含“MVC_CSAlerts.Controllers.AlertsController”中方法“System.Web.Mvc.ActionResult SubAlertModal(Int32)”的不可为空类型“System.Int32”的参数“alertid”的空条目。可选参数必须是引用类型、可空类型或声明为可选参数。参数名称:参数
  • 如果您没有对路线进行任何更改 - 然后将您的 alertid 更改为 id - 因为这将是默认参数
  • @Html.ActionLink("Sub_Alert", "SubAlertModal", new { alertid = item.AlertID }, new { @class= "ModalOpener" })
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多