3

我正在使用 EF 开发一个 MVC3 应用程序,我想使用 jQuery ajax 使 UI 流畅,用户将能够浏览 url,如果他知道的话,或者他可能会收到指向特定路线的链接,但是,一旦页面完全加载,它需要流畅,所以我想出了一个想法,我想在这里讨论它,然后再对解决方案进行更改。

这是我想出的:

TestController.cs(为简单起见,省略了方法代码)

public ActionResult Index() { ... }

public ActionResult Create() { ... }
[HttpPost]
public ActionResult Create(Test test) { ... }

public ActionResult Update(int testID) { ... }
[HttpPost]
public ActionResult Update(Test test) { ... }

public ActionResult Delete(int testID) { ... }
[HttpPost]
public ActionResult Delete(Test test) { ... }

到目前为止,它看起来像大多数控制器。我的看法如下:

Views\Test\List.cshtml
Views\Test\Create.cshtml
Views\Test\Details.cshtml
Views\Test\Delete.cshtml

现在因为我想做异步:我已经改变了我的列表视图,所以我可以从列表中添加、修改和删除,到目前为止它就像一个魅力。另外,用户仍然可以使用 url 浏览应用程序,请注意,应用程序内的每个链接都会执行 ajax 请求来完成实际工作,没有 Route/Action 链接。

到目前为止,应用程序正在按预期工作,但现在我遇到了一些事情:我需要 ActionResult 和 PartialViewResult 的视图,这是因为用户可以输入 url:“/Admin/Test”,它应该返回整页,或者可以单击仅加载“/Admin/Test”内容并显示它的锚点。为了避免著名的页内页错误我写了一个函数发送请求,当请求到达时,它只选择我需要的内容,避免页面内的页面,并复制视图,但是,响应是整个页面,我不需要说,它不是最好的选择,但是由于应用程序将被 lan 使用,所以我不太关心响应的有效负载,但是我需要在视图中编写 javascript 代码,所以我的解决方案就像 null 因为使用 jQuery 选择器只得到我需要的 javascript 不存在。

至于我解决上一个解决方案的新解决方案:我想我可能会保留原始视图,并创建另一个视图,在原始名称后附加单词“Partial”,在控制器中创建另一个具有相同命名约定的方法,加上将新路由添加到我的路由表中。

总结一下,我需要的是以下内容: - 如果用户键入“/Test”,则响应应该是整个页面,像过去一样加载,屏幕闪烁白色等。- 但是如果用户点击导航栏中的测试链接,响应应该是异步的并且只刷新我布局的内容。

有任何想法吗?想法?建议?

4

1 回答 1

2

在您的操作方法中,您可以拥有

 if (Request.IsAjaxRequest())
      return PartialView("_somePartialView");
 else
      return PartialView("_someOtherPartialView");
于 2012-08-11T14:46:25.507 回答