我已按照可能重复出现的问题中的步骤进行操作,但并没有解决我的错误。
除了一个按钮,我的整个应用程序在上传到服务器时都能正常工作。
该按钮是带有ID的简单按钮。当我单击它时,一个函数将捕获该单击,从用户输入字段中获取关联的数据,将其发送到控制器,然后将数据保存到数据库。
当我上载到服务器时,网站上的所有其他内容均运行正常。但是,在尝试找到控制器操作时,该按钮会引发404错误。
这里是按钮:
<input type="button" id="btnAdd" value="Add" class="btn btn-primary" />
调用控制器动作的脚本:
$(function () {
$("#btnAdd").click(function () {
//snipped for brevity
//Send the records to server for saving to database.
$.ajax({
type: "POST",
url: "/Designees/InsertDesg",
data: '{FnameD: "' + txtFnameD.val() + '",LnameD: "' + txtLnameD.val() + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
$("#txtLandownerID").val(r.LandownerID);
$("#txtPermitNo").val(r.PermitNo);
$("#txtExpYear").val(r.ExpYear);
//Add the Name value to first cell.
SetValue(row, 2, txtFnameD);
SetValue(row, 3, txtLnameD);
//Add the row to the WebGrid.
webGrid.append(row);
window.location.href = r.Url;
}
});
});
控制器操作:
[HttpPost]
public JsonResult InsertDesg(Designee designee)
{
designee.CreatedDate = System.DateTime.Now;
designee.ModifiedDate = System.DateTime.Now;
var user = context.Users.SingleOrDefault(u => u.BhCode == User.Identity.Name);
designee.EnteredBy = user.Id;
db.Designees.Add(designee);
db.SaveChanges();
var redirectUrl = new UrlHelper(Request.RequestContext).Action("Index", "Designees", new { id = designee.LandownerID, permit = designee.PermitNo, year = designee.ExpYear });
return Json(new { Url = redirectUrl, designee });
}
我希望服务器上发生的事情与本地系统上发生的事情相同。谁能想到解决方案?我的IIS日志只显示404错误,什么都没有显示。
解决方案
我不知道为什么要修复它,但是我将函数调用从上面更改为下面,现在可以正常工作:
var RootUrl = '@Url.Content("~/")';
//Send the records to server for saving to database.
$.ajax({
type: "POST",
url: RootUrl + "Designees/InsertDesg",
答案 0 :(得分:1)
另一种解决方案是使用Url.Action()
创建ajax url链接。
$(function () {
$("#btnAdd").click(function () {
//snipped for brevity
//Send the records to server for saving to database.
$.ajax({
type: "POST",
url: "@Url.Action("InsertDesg", "Designees")",
data: '{FnameD: "' + txtFnameD.val() + '",LnameD: "' + txtLnameD.val() + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
$("#txtLandownerID").val(r.LandownerID);
$("#txtPermitNo").val(r.PermitNo);
$("#txtExpYear").val(r.ExpYear);
//Add the Name value to first cell.
SetValue(row, 2, txtFnameD);
SetValue(row, 3, txtLnameD);
//Add the row to the WebGrid.
webGrid.append(row);
window.location.href = r.Url;
}
});
});
通过这种方式,您不必担心像您提供的解决方案那样分配RootUrl
变量。
答案 1 :(得分:0)
您可以尝试将这段代码放入您的操作中,看看是否可行:
[HttpPost("Designees/InsertDesg", Order = 1)]
public JsonResult InsertDesg([FromBody]Designee designee)