asp.NET MVC将信息传递给PartialView

本文关键字:PartialView 信息 NET MVC asp | 更新日期: 2023-09-27 17:58:31

我正在开发一个基于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的请求,但我必须传递许多参数,其中一些可能没有设置或为空或为null。正因为如此,我寻找将对象或ViewBag的值或类似的东西传递到局部视图的可能性。

在我的代码中,是否有可能将模型对象传递给控制器?数据必须到控制器进行进一步验证等等。我知道我可以将模型传递到视图本身,但我需要在控制器中输入这些数据。

我的控制器访问如下:

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.michaelkennedy.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请求是这样的:

$(item).load(url, {"DatumVon":dateVon, "DatumBis":dateBis, "Werk":werk, "Pruefplatz":pruefplatz, "Auftrag":auftrag, "Gueltig":gueltig});

asp.NET MVC将信息传递给PartialView

如果有很多参数要传递给动作方法,请创建一个包含这些参数的模型。例如,我在下面创建了MyParamModel类:

 public class MyParamModel
 {
    //Your parameters go here
    public int IntProperty { get; set; }
    public string StringProperty { get; set; }
 }

然后修改操作方法以接受此类作为参数。

public ActionResult Action(MyParamModel model)

修改脚本中的load调用,将信息传递到url,如下所示。

$(item).load(url, {"IntProperty":1, "StringProperty": "test"});

一旦控制器端有了模型,就可以相应地对其进行验证。希望这能有所帮助。如果是,请将其标记为答案。