【发布时间】:2020-06-26 09:29:53
【问题描述】:
我目前正在从事 asp.net core mvc 项目。有一个主页(cshtml),其中包含一些数据和两个部分视图。
此页面的控制器包含动作,它将模型返回到视图(使用模型绑定)。我猜想在控制器中为将数据返回到两个局部视图而创建的另外 2 个操作会正常工作。但现在我的应用程序无法正常工作,因为它试图将数据从主页传递到部分视图,从而产生绑定错误(部分视图都有其独特的模型)。
我目前正在使用<partial> 标签将我的部分视图添加到主视图中。这个标签包含一个属性view-data,它可以解决模型绑定的问题。但是感觉像创建一个包含很多子对象的大联合对象以通过view-data 传递它不是一个好习惯。
所以我想就处理此类案件的最佳做法发表意见。用这样的多个分离数据创建页面的最佳方法是什么?
我目前的观点是,最好的方法是让主视图从控制器获取可行的信息,并在部分视图中通过 ajax 获取。但无论如何,仍然存在一个问题,如何绕过这个错误,应用程序试图将数据从主视图传递到部分视图(就像我想在部分视图中保持模型绑定以用 ajax 填充它)。
【问题讨论】:
-
您必须在控制器中创建一个包含所有内容的模型......并且该模型必须具有两个属性,每个属性每个视图的类型......所以从主视图时你调用部分视图你传递相应属性的值......像这样
-
请记住,
标签还有一个“model”属性,您可以使用该属性将模型传递给它。 -
@JonathanAlfaro 还有没有别的办法?听起来有点糟糕。就像我必须等到这个大对象获得所有数据一样。可能是 4-5 db 请求。我想用 ajax 制作它要好得多。但我仍然不明白如何通过绑定绕过这个错误。也许我只需要在全景视图中拒绝模型绑定?
-
把它变成 ajax 是最糟糕的,因为不仅你仍然需要发出相同的 4-5 db 请求,而且现在你已经添加了两个额外的 http 请求。
-
也就是说,如果你想让它成为 ajax,你可以在页面或控制器上创建两个额外的操作并返回部分视图......然后从 ajax 调用中获取结果并将其分配给例如 div 的内容
标签: c# asp.net asp.net-core razor-pages