2011-04-25 44 views
0

我刚刚学习ASP.Net的MVC框架,所以我的问题可能是基本的。但是当我紧紧地绑定到View Models时,我需要网页的可重用性方面的帮助。在您的街道地址输入最接近的库搜索:ASP.Net MVC-服务器端包含绑定到视图模型

考虑如下所示的应用程序:

屏幕1。搜索结束后,图书馆将显示该页面已紧密绑定到“图书馆视图模型”。

屏幕2:按照姓名和出生日期搜索您的注册信息,并在结果中包含最近的图书馆,屏幕布局与屏幕1完全相同。此屏幕显示的信息多于屏幕1,因为它与查看注册模型,其中包含作为属性的库视图模型。

我想重用屏幕1,基本上是做一个“有”,让我对屏幕1所有HTML没有在屏幕2.

被改写,但我怎么做,当两者紧密绑定到不同的视图模型?

我可能甚至没有用正确的词汇搜索。任何指导适当的功能,将不胜感激。

回答

2

将在屏幕1和屏幕2中使用的HTML应放置在部分视图中。部分视图像用户控件,可以在多个屏幕中使用。

将部分视图绑定到库视图模型。

在屏幕2,你可以使用下面的代码使局部视图:

<%: Html.RenderPartial('LibraryPartialView', Model.LibraryViewModel) %>

这里我们渲染库局部视图在屏幕2并通过它的图书馆视图模型对象(其最初包含在注册视图模型中;这里Model涉及注册视图模型)。

在屏幕1中,您必须使用相同的代码呈现库部分视图。

+0

完美 - 谢谢! – user158017 2011-04-27 16:41:03

+0

只是在对此进行处理之后对上述内容进行了更正。而不是<%:Html ....它应该是<%Html .... – user158017 2011-04-29 14:09:24

1

此外,您还可以使用ajax和jQuery加载它。喜欢的东西

<div id="libs">loading...</div> 
$("#libs").load("/libraries/address/12-w-6-ave"); 

或者,如果库不是模型的一部分(如果你喜欢它不被),你只需要加载的动作,就好像它是一个单独的请求

@HTML.RenderAction("action", "controller", new {id=Model.Address}) 

两个如果您需要/喜欢,那些方法允许您将注册信息从图书馆信息中分离出来。

+0

这会起作用,但是我们在这个系统中避免使用基本功能的Javascript。 – user158017 2011-04-27 16:34:33

+0

在这种情况下,如果数据不是模型的一部分,并且部分(如已显示的答案),则使用动作。 – 2011-04-28 14:52:49

+0

好 - 这是有道理的。感谢您的澄清! – user158017 2011-04-29 14:09:44