【问题标题】:Call Action in Controller From View and send parameter从视图中调用控制器中的操作并发送参数
【发布时间】:2014-07-14 20:02:18
【问题描述】:

我正在尝试从 javascript 操作调用 MVC 中控制器内的方法。 javascript 操作应该在控制器内部调用此方法并向其发送一些参数。

我的 Javascript 代码如下所示:

location.href = '@Url.Content("~/Areas/MyArea/MyMethod/"+Model.MyId)';

我的方法定义如下:

[HttpGet] 
public ActionResult MyMethod(int? MyId) 
{ 
   doSomething(MyId); 
   return View("MyView"); 
}

但是,当我调试应用程序时,当调用该方法时,MyId 参数作为 null 而不是作为我的模型中 MyId 参数的当前值传递。我该怎么做才能正确发送或检索此值?谢谢!

【问题讨论】:

    标签: javascript asp.net-mvc redirect model-view-controller


    【解决方案1】:

    在您的路由定义中,我假设该参数称为{id} 而不是{MyId}

    public override void RegisterArea(AreaRegistrationContext context) 
    {
        context.MapRoute(
            "MyArea_default",
            "MyArea/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );
    }
    

    所以尽量保持一致并相应地调整您的控制器操作参数名称:

    [HttpGet] 
    public ActionResult MyMethod(int? id) 
    { 
        doSomething(id); 
        return View("MyView");
    }
    

    您可能还想使用 url 助手而不是在您的 javascript 代码中硬编码一些 url 模式:

    window.location.href = '@Url.Action("MyMethod", "SomeControllerName", new { area = "MyArea", id = Model.MyId })';
    

    Url.Content 帮助器用于引用您网站中的静态资源,例如 javascript、css 和图像文件。对于控制器操作,最好使用 Url.Action 辅助方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多