首页 > 解决方案 > MVC C# AJAX Post 路由问题

问题描述

我来自 ASP Classic 背景,是 MVC 面向对象编程的新手,尤其是他们的重新路由配置。我确实了解模型视图控制器的概念。

我有以下问题:

当我的观点在Password.chtmlPasswordDet.chtml

button [New] will be http://localhost:50218/Password/PasswordDet或者

button [Edit] will be http://localhost:50218/Password/PasswordDet/123

AJAX 回发触发回传的 URL 语法PasswordController/PasswordDet有所不同,这取决于您是来自[New]还是[Edit]为了回发工作。

我的理解是,现在我在 PasswordDet.chtml。触发PasswordController/PasswordDet/不应该 var url = 'PasswordDet/' + $("#btnSubmit").val()吗?或者请分享什么是正确的方法。请帮忙谢谢。

以下是我的问题的说明。

在此处输入图像描述

Password.chtmlPasswordDet.chtml我有:

新的

window.location.href = '@Url.Action("PasswordDet", "Password")';

编辑

"render": function (data, type, full, meta) {
     return '<a href="/Password/PasswordDet/' + full.AutoINC + '"><img src="../../Content/myPics/edit-2-24.png" ></a>';
 }

但为了让它工作。在PasswordDet.htmlAJAX 回传

New我需要放在PasswordDet/前面:

 var url = 'PasswordDet/' + $("#btnSubmit").val()

而且Edit我不需要:

 var url = $("#btnSubmit").val()

他们两个不应该一样吗

PasswordDet.chtml 中的 AjaxCode

var url = 'PasswordDet/' + $("#btnSubmit").val()
var formData = $('#formPassDet').serialize();

$.ajax({

     url: url,
     type: "POST",
     data: formData,
     dataType: "json",
     success: function (response) {

         if (response.status == "saved") {

     *****Here i don't need to put '.../"  ******************
            window.location.href = 'Password';

         } else if (response.status == "updated") {

     *****Here i have to put************************ 
            window.location.href = '../Password/';
   });

密码控制器

    [HttpPost]
    public ActionResult PasswordDet(string id, ForgotPasswordModel viewModel)
    {
      some  code
    }

RouteConfig 不知道怎么用

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Login", id = UrlParameter.Optional }
        );

标签: c#ajaxasp.net-mvcasp.net-mvc-routing

解决方案


实际上不清楚你需要什么。如果你是 MVC 的初学者,请通过链接https://www.youtube.com/watch?v=bCNyL4LfWSw


推荐阅读