这是我遇到问题的行:
<% using(Html.BeginForm("Create#result", "Report", FormMethod.Post)) { %>
使用 C# 3.5 和 MVC2,表单呈现如下:
<form action="/Report.aspx/Create#result" method="post">
现在使用 C# 4.0 和 MVC2,表单呈现如下:
<form action="/Report.aspx/Create%23result" method="post">
这会导致问题:
System.Web.HttpException (0x80004005): A public action method 'Create#result' was not found
我认为新行为是有问题的,我不希望散列逃逸。它发生在哪里?我可以改变行为吗?
MVC 版本应该在某个时候更新,但是当这种行为开始导致问题时,我正在处理另一部分。
更新
我通过在客户端使用 jquery 更新表单操作来解决它。
表格
<% using(Html.BeginForm("Create", "Report", FormMethod.Post, new { id = "frmReport" })) { %>
Javascript
var frmReport = $("#frmReport");
if (0 < frmReport.length) {
var action = frmReport.attr("action");
action = action + "#result";
frmReport.attr("action", action);
}