我正在尝试将字符串值传递给创建项对话框,并且不确定如何执行此操作。
这是我视图中的代码:
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控制器,以使用传入的字符串值弹出我的对话框。
答案 0 :(得分: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中读取它。
而不是将路由变量值附加到查询字符串,您可以将其视为邮件正文的一部分。
答案 1 :(得分:0)
有两种选择。 1,使用Url.Action("controllerName", "actionName", new {routeName = "your route name here"})
或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
}
});
}