0

我正在尝试将字符串值传递给创建项目对话框,但不确定如何执行此操作。

这是我认为的代码:

JavaScript:

function newRoute() {
    $.ajax({
        url: '@Url.Action("Create")',
        success: function (data) {
            if (data == "success") //successfully created the new route
                window.location.href = '@Url.RouteUrl(ViewContext.RouteData.Values)'
            else
                $.facybox(data); // there are validation errors, show the dialog w/ the errors
        }
    });
}

看法:

<td>@route</td>
<td>
    <a href="javascript:newRoute();" class="button">Add</a>
</td>

控制器

public ActionResult Create(string routeName = "")
    {
        PopulateRouteInfoViewBag();

        var newRoute = new RouteInformation();

        newRoute.Name = routeName;

        return View(newRoute);
    }

我正在尝试获取@route 中的值并将其传递给 Create 控制器,以便弹出带有传入字符串值的对话框。

4

2 回答 2

0

使用 ActionLink html 辅助方法并像这样传递路由变量。

@{
   string route="somevaluehere";
 }
@Html.ActionLink("Add","Create","YourControllerName",
                          new { routeName=route},new {@id="addLnk"})

现在处理点击事件

$(function(){

   $("#addLnk").click(function(e){
     e.preventDefault();  //prevent normal link click behaviour
     var _this=$(this); 

      //do your ajax call now
      $.ajax({
        url: _this.attr("href"),
        success: function (data) {
            if (data == "success") //successfully created the new route
                window.location.href = 'someValidUrlHere'
            else
                $.facybox(data); 
         }
       });

   });     

});

此外,您可以考虑构建新页面的路径(操作方法)并将其作为 JSON 结果的一部分返回,并让客户端从 JSON 中读取它。

您可以将其视为消息正文的一部分,而不是将路由变量值附加到查询字符串。

于 2013-01-14T18:34:20.857 回答
0

有两种选择。1、使用Url.Action("controllerName", "actionName", new {routeName = "your route name here"})or 2、使用传入$.ajax的对象的data属性。

对于 2,您的 javascript 看起来像

function newRoute() {
    $.ajax({
        url: '@Url.Action("Create")',
        data: {
            route: "your data here"
        }
        success: function (data) {
            if (data == "success") //successfully created the new route
                window.location.href = '@Url.RouteUrl(ViewContext.RouteData.Values)'
            else
                $.facybox(data); // there are validation errors, show the dialog w/ the errors
        }
    });
}
于 2013-01-14T18:34:55.650 回答