[英]MVC 4 Pass value from Javascript to Controller
在我看来,我有一个javascript函数来处理饼图上的select事件。 功能如下图所示:
function selectHandler() {
var selectedItem = visualization.getSelection()[0];
if (selectedItem) {
var val = data.getFormattedValue(selectedItem.row, 0);
location.href = '/Tickets';
}
}
目前,我在“ 组”视图中的主控制器上。 我想导航到Tickets Controller的索引视图,同时传递从javascript变量“ val”中选择的值。 我将如何去做呢?
您打算手动导航用户吗?
如果您正在寻找一种重定向JavaScript的方式,那么您可以做的简单...
location.href = '/Tickets?value=' + val;
现在这可能不适用于所有情况。 例如,如果location.href已经包含“?”,并且您需要维护该上下文,则需要使用“&”。 也许您的应用程序位于虚拟目录中。
您可能会做类似...
var newUrl = location.href;
if (newUrl.indexOf('?') > -1)
newUrl += '&';
else
newUrl += '?';
newUrl += val;
这也允许您维护任何现有上下文。
如果希望已定义票证,则可能需要将其从查询字符串中删除(如果已存在)。
在这种情况下,您可能想要做类似...
var params = location.search.substring(1).split('&'),
paramToRemove, indexOfValue,
hasSearch = false,
param;
for (var i = 0, len = i; i < len; i++)
{
param = params[i];
indexOfValue = param.indexOf('value');
hasSearch = param.indexOf('?') === 0;
if (indexOfValue === 0 || (indexOfValue === 1 && hasSearch ))
{
paramToRemove = params[i];
break;
}
}
var newUrl = location.href;
// Remove old value
if (paramToRemove) newUrl = newUrl.replace(paramToRemove, hasSearch ? '?' : '');
// Add proper search char
if (newUrl.indexOf('?') > -1)
newUrl += '&';
else
newUrl += '?';
// Add new value
newUrl += val;
location.href = '/Tickets?val=' + val;
//On page load the server will generate the URL for you.
var ticketURL = '@Url.Action("Index", "Tickets")';
//Append the value to the URL
ticketURL = ticketURL + '?val=' + val;
//Do your stuff!
从那开始,您就是从javascript调用Controller方法。 您应该对Ticket Controller进行POST ajax调用,并同时传递Action方法名称。
您的代码将如下所示:
返回$ .post('/ Ticket(ControllerName)/ Index(方法名)/',这里的参数);
在API控制器内部,Index方法将接受我们从JavaScript传递的相同参数。
ActionResult索引(参数){...}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.