MVC 4 Controller不会显示视图

时间:2013-08-28 18:36:37

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

我有一个带有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>

由于

1 个答案:

答案 0 :(得分:1)

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

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

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

即可