Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 使用MVC为来自客户端的ViewData分配值_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 使用MVC为来自客户端的ViewData分配值

Asp.net mvc 使用MVC为来自客户端的ViewData分配值,asp.net-mvc,Asp.net Mvc,我继承了一个MVC应用程序,并且是一个来自ASP.NET环境的真正的新手。我的问题是我无法在局部视图和控制器之间移动变量数据。在ASP.NET中,这是非常直接的,而在MVC中则不是这样。因此,当从客户端选择选项卡时,将触发以下代码,但我需要从客户端捕获selectedTabIndex值并将其传递给控制器 ABSELECT(e)上的函数{ var selectedTabIndex=0; selectedTabIndex=$(e.item).index(); 警报(选择Tabindex); } 我

我继承了一个MVC应用程序,并且是一个来自ASP.NET环境的真正的新手。我的问题是我无法在局部视图和控制器之间移动变量数据。在ASP.NET中,这是非常直接的,而在MVC中则不是这样。因此,当从客户端选择选项卡时,将触发以下代码,但我需要从客户端捕获selectedTabIndex值并将其传递给控制器

ABSELECT(e)上的函数{ var selectedTabIndex=0; selectedTabIndex=$(e.item).index(); 警报(选择Tabindex); } 我考虑过使用ViewData对象,但似乎没有办法让它从函数中执行此赋值任务。因此,下面的代码似乎是一个荒谬的任务,它无论如何都会失败。(记住,我在这方面是一个极端的新手)

ABSELECT(e)上的函数{ var selectedTabIndex=0; =选定的数据索引; } 我也考虑过使用cookies,但这似乎也不是一个实用的方法。在ASP.NET中,我可以使用.find方法访问客户端控件,但这对我来说是一个陡峭的学习曲线


< P>我的备选方案是什么?

< P>如果用户在保存操作之间可以选择不同的选项卡,则可能需要考虑绑定某种点击函数(使用jQuery)来设置<代码>选择的Tab指标< /Cord>JavaScript变量。或者,您可以将隐藏输入的值设置为选定的选项卡索引

在任何一种情况下,如果在提交保存操作时需要控制器中的值(用于设置ViewData、ViewBag、某些模型数据等),则可以通过
$.ajax
提交数据,并从控制器返回一些JSON

$('#SaveButton').click(function() {
  $.ajax({
    url: '/Controller/Save',
    type: 'POST',
    // you might need to serialize additional data you want to save here
    // but you could create any JSON object before calling $.ajax
    data: {"selectedTabIndex": selectedTabIndex}, // data to POST
    dataType: 'json', // this indicates the type of data returned from controller
    success: function(data) {
      // you didn't really describe how to programatically set a tab,
      // so "setToTab" is a guess
      $('#tabID').setToTab(data.selectedTabIndex);
    }
  });
}
您的控制器可能看起来像

public ActionResult Save(int selectedTabIndex)
{
  // again, you might need different parameters to complete your Save
  return JsonResult(new { selectedTabIndex: selectedTabIndex });
}

如果用户可以在保存操作之间选择不同的选项卡,则可能需要考虑绑定某种点击函数(使用jQuery)来设置<代码>选择的Tab指标< /Cord>JavaScript变量。或者,您可以将隐藏输入的值设置为选定的选项卡索引

在任何一种情况下,如果在提交保存操作时需要控制器中的值(用于设置ViewData、ViewBag、某些模型数据等),则可以通过
$.ajax
提交数据,并从控制器返回一些JSON

$('#SaveButton').click(function() {
  $.ajax({
    url: '/Controller/Save',
    type: 'POST',
    // you might need to serialize additional data you want to save here
    // but you could create any JSON object before calling $.ajax
    data: {"selectedTabIndex": selectedTabIndex}, // data to POST
    dataType: 'json', // this indicates the type of data returned from controller
    success: function(data) {
      // you didn't really describe how to programatically set a tab,
      // so "setToTab" is a guess
      $('#tabID').setToTab(data.selectedTabIndex);
    }
  });
}
您的控制器可能看起来像

public ActionResult Save(int selectedTabIndex)
{
  // again, you might need different parameters to complete your Save
  return JsonResult(new { selectedTabIndex: selectedTabIndex });
}

数据通过
httppost
发送到控制器。创建一个隐藏的输入
,并在
POST
之前使用javascript设置值。控制器可以从表单参数中提取该值,或者如果该方法包含与输入名称匹配的参数,则可以在Action方法中自动填充该值


这是一个非ajax的替代方案。

数据通过
HTTPPOST
发送到控制器。创建一个隐藏的输入
,并在
POST
之前使用javascript设置值。控制器可以从表单参数中提取该值,或者如果该方法包含与输入名称匹配的参数,则可以在Action方法中自动填充该值


这是一个非ajax的替代方案。

@Mark:基本功能的目标是从服务器生成数据/html/json/单击时在选项卡中显示的内容吗?不,David,基本功能是在单击“提交”按钮进行保存操作后,使部分视图保留选定的选项卡。问题是控制器中未检测到SelectedTabIndex值以保留该值。我认为有效的方法是使用已确认的值,该值将在随后选择的每个不同选项卡上更改,并在控制器中捕获和分配。这对您有意义吗?@Mark:基本功能的目标是从服务器生成数据/html/json/单击时显示在选项卡中的内容吗?不,David,基本功能是在单击“提交”按钮进行保存操作后,使用局部视图保留所选的Tabindex。问题是控制器中未检测到SelectedTabIndex值以保留该值。我认为有效的方法是使用已确认的值,该值将在随后选择的每个不同选项卡上更改,并在控制器中捕获和分配。这对你有意义吗?