我想从View向Partial View发送3个参数,我将部分视图打开到新的浏览器选项卡。
参数是
var Hdata = 'some value';
var abc = document.getElementById('mycontrol1');
var abcd = document.getElementById('mycontrol2');
这三个参数我想将它发送到部分视图。 代码就像
window.open('@Url.Action("Action", "Controller")', '_blank');
那么如何将数据传递给部分视图。
先谢谢。
答案 0 :(得分:0)
最简单的方法是在查询字符串中。像。的东西。
window.open('@Url.Action("Action", "Controller", new { data1 = Model.Data1 })', '_blank');
然后您将数据传递到新窗口。但是现在您已将数据暴露给URL并且处理复杂类型可能会变得困难。如果可能,最好将标识符传递给您的操作,以便重建您希望在窗口中显示的模型。
window.open('@Url.Action("Action", "Controller", new { id = Model.Id })', '_blank');
答案 1 :(得分:0)
从我的问题和所提供的代码中可以理解,您正在从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();
}