我正在使用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}}部分删除))
答案 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>
}