0

我正在使用 MVC3(代码优先)并遇到了一些奇怪的东西。当我想删除一个问题时会发生这种情况。当我编写包含问题所有方面的页面时,它工作正常,但由于我在几页中需要相同的东西,我想我把它放在一个单独的页面中,然后放在带有@RenderPage.

当我使用选项一时,删除效果很好,但是当我使用第二个选项时,删除不起作用。有人可以解释一下这是怎么回事,如果我可以修复它,以便我可以使用@RenderPage.

为了澄清,我将给出一些代码:

选项1

<div class="Question">
    <div class="QuestionHeader">
        <div class="QuestionTitle">@Html.DisplayFor(model => model.Title)</div>
        <div class="QuestionDate">@Html.DisplayFor(model => model.Date)</div>
    </div>
    <hr />
    <div class="display-field">@Html.DisplayFor(model => model.Message)</div>
    <div class="spacing">
    <hr />
    <div class="QuestionAuthor>@Html.DisplayFor(model => model.Author)</div>
</div>
@using (Html.BeginForm()){
    <p class="bottomNav">
        <input type="submit" value="Delete" /> |
        @Html.ActionLink("Back to list", "Index")
    </p>
}

选项 2

@RenderPage("~/Views/Shared/_InitQuestion.cshtml")
@using (Html.BeginForm()){
    <p class="bottomNav">
        <input type="submit" value="Delete" /> |
        @Html.ActionLink("Back to list", "Index")
    </p>
}

(我认为这里没有,但如果你看到一个错字:抱歉,我不能复制/粘贴代码,因为我不是从我的工作计算机上写的。我很确定没有我计算机上的代码中有任何错字。我看到问题的详细信息很好@RenderPage,我只是无法删除它(不会进入控制器的ActionResultHttpPost删除的一部分))

4

2 回答 2

0

用户 Html.Partial 而不是 RenderPage 并且您不需要正确地查看视图的整个路径。当你提交一个表单时,一些输入的特定名称被传递给动作,你在表单中什么都没有,也没有传递给动作,它怎么知道要删除什么?

@Html.Partial("_InitQuestion", Model)
@using(Html.BeginForm())
{
    <p class="bottomNav">
        <input type="submit" value="Delete" /> |
        <input type="hidden" value="@(Model.Id)" name="Id" />
        @Htlm.ActionLink("Back to list", "Index")
    </p>
}
于 2013-04-12T14:00:05.603 回答
0

我不知道为什么(所以如果有人能解释一下,请解释一下),但由于某种原因,@RenderPage 出现了可怕的错误。我首先对选项 1 进行编码,运行它并复制/粘贴源代码,然后对选项 2 执行相同操作。比较两者,发现由于某种原因,选项 2(@RenderPage)没有表单标签。

有人建议使用 Partial 代替 RenderPage 并且它有效。所以现在我的代码是:

@Html.Partial("~/Views/Shared/_InitQuestion.cshtml", Model)
@using(Html.BeginForm())
{
    <p class="bottomNav">
        <input type="submit" value="Delete" /> |
        @Htlm.ActionLink("Back to list", "Index")
    </p>
}
于 2013-04-11T12:18:12.300 回答