【问题标题】:Passing data from view to partial view in MVC在 MVC 中将数据从视图传递到局部视图
【发布时间】:2016-06-26 06:08:41
【问题描述】:

我想将 3 个参数从视图发送到局部视图,并且我正在将局部视图打开到新的浏览器选项卡中。

参数是

var Hdata = 'some value'; 
var abc = document.getElementById('mycontrol1');
var abcd = document.getElementById('mycontrol2');

我想将这 3 个参数发送到局部视图。 代码就像

window.open('@Url.Action("Action", "Controller")', '_blank');

那么我怎样才能将数据传递给部分视图。

提前致谢。

【问题讨论】:

标签: c# model-view-controller


【解决方案1】:

根据我从您的问题和提供的代码中了解到的情况,您正在从 DOM 元素中提取一些值,然后在某些事件中尝试在新选项卡中打开视图。现在,您希望 DOM 元素的这些数据在新视图中也可用。如果这个理解是正确的,那么你可以像下面那样做。

你已经有了这个。

var Hdata = 'some value'; 
var abc = document.getElementById('mycontrol1');
var abcd = document.getElementById('mycontrol2');

现在有了这些值,你只需要点击一个控制器来渲染视图。因此,您可以通过构造查询字符串将这些值传递给控制器​​。

var URL = '@Url.Action("Action", "Controller")' + '?Hdata=' +Hdata + '&abc='+abc +'&abcd='+abcd;
window.open(URL , '_blank');

你的控制器也必须是这样的。

 public ActionResult YourControllerName(string Hdata,string abc, string abcd)
 {
    ViewBag.Hdata = Hdata;
    ViewBag.abc = abc;
    ViewBag.abcd= abcd;

    return PartialView();
 }

现在您将通过 ViewBag 在局部视图中获得数据。

或者更简洁的方法是有一个模型来接收和传递数据。

 public class YourModel
 {
  public string Hdata {get;set;}
  public string abc {get;set;}
  public string abcd {get;set;}
 }

那么控制器就是

 public ActionResult YourControllerName(YourModel pageData)
  {
    return PartialView(pageData); //this requires your view to use model of type YourModel
   // OR
   // ViewBag.PageData = pageData;
   // return PartialView();
  }

【讨论】:

    【解决方案2】:

    最简单的方法是在查询字符串中。类似的东西。

    window.open('@Url.Action("Action", "Controller", new { data1 = Model.Data1 })', '_blank');
    

    然后您将数据传递到您的新窗口。但是,现在您已将数据暴露给 URL,处理复杂类型可能会变得很困难。如果可能的话,最好将标识符传递给您的操作,以便您重建希望在窗口中显示的模型。

    window.open('@Url.Action("Action", "Controller", new { id = Model.Id })', '_blank');
    

    【讨论】:

    • 当我使用它时,我收到以下错误。 An exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in System.Core.dll but was not handled in user code
    猜你喜欢
    • 1970-01-01
    • 2019-11-14
    • 1970-01-01
    • 2018-03-01
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多