我正在开发基于asp.NET MVC 5的应用程序
此应用程序从本地Web服务下载大量数据并应显示它。 因为它是很多数据,我通过局部视图调用web服务,如下所示:
<div class="partialContents" id="partialContent" data-url="/Home/Action">
Loading...
</div>
这与以下JS代码异步加载:
$(document).ready(function (e) {
$(".partialContents").each(function (index, item) {
var url = $(item).data("url");
if (url && url.length > 0) {
$(item).load(url);
}
});
});
这就像预期的那样。
但是现在我必须将表单的值传递给这个局部视图。
我知道我可以像往常一样传递参数,就像对/Home/Action/Params
的请求一样,但是我必须传递许多参数,其中一些可能没有设置或空或空。
因此,我寻找将ViewBag的对象或值或类似的东西传递给局部视图的可能性。
是否有可能在我的代码中将Model-Object传递给Controller? 数据必须送到控制器进行进一步验证,依此类推。我知道我可以将模型传递给视图本身,但我需要在控制器中使用这些数据。
我的控制器访问如下:
public ActionResult Index()
{
//Do things
return View(model);
}
public ActionResult Action()
{
//Validate the Form-Data
//Download Data from Webservice
return PartialView("MyPartialView", model);
}
非常感谢任何帮助或帮助。
也许我必须编辑Javascript代码,但我通常不会在JS中编码,所以我有以下源代码(遵循他的教程):blog.michaelckennedy.net
//其他信息
我的ViewModel如下所示:
public class PostForm
{
public string DatumVon { get; set; }
public string DatumBis { get; set; }
public string Werk { get; set; }
public string Pruefplatz { get; set; }
public string Auftrag { get; set; }
public string Gueltig { get; set; }
}
和我的Java-Request这样:
$(item).load(url, {"DatumVon":dateVon, "DatumBis":dateBis, "Werk":werk, "Pruefplatz":pruefplatz, "Auftrag":auftrag, "Gueltig":gueltig});
答案 0 :(得分:1)
如果要将大量参数传递给action方法,请创建一个包含这些参数的模型。例如,我在下面创建了MyParamModel类:
public class MyParamModel
{
//Your parameters go here
public int IntProperty { get; set; }
public string StringProperty { get; set; }
}
然后修改action方法以接受此类作为参数。
public ActionResult Action(MyParamModel model)
修改脚本中的加载调用,将信息传递给这样的URL。
$(item).load(url, {"IntProperty":1, "StringProperty": "test"});
在控制器端获得模型后,您可以相应地对其进行验证。 希望这可以帮助。如果是,请将其标记为答案。