繁体   English   中英

MVC 4将值从Javascript传递到控制器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM