删除不使用@RenderPage

时间:2013-04-11 09:27:11

标签: c# asp.net-mvc-3 razor

我正在使用MVC3(代码优先),并遇到了一些特殊的东西。当我想删除问题时会发生这种情况。当我用问题的所有方面编写页面时,它工作得很好,但由于我在几个页面中需要相同的东西,我认为我把它放在一个单独的页面中并放入@RenderPage的页面中。

当我使用选项1执行此操作时,删除工作完美,但是当我使用第二个选项执行此操作时,删除不起作用。有人可以解释一下这是怎么回事,如果我可以修复它,那么我可以使用@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看到了问题详细信息,我只是无法删除它(不会进入控制器的ActionResult,{{ 1}}部分删除))

2 个答案:

答案 0 :(得分: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>
}

答案 1 :(得分: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>
}