asp.net - ASP.NET MVC 最佳实践:传递数据
问题描述
这可能是一个显而易见的问题,但假设我想将一些数据传递到我的视图中,并立即想用 javascript 处理它。似乎真正的 MVC 架构需要使用 ViewModel 传递这些数据:
public ActionResult Index()
{
SomeViewModel model = PopulateSomeViewModel();
return View( model );
}
然后使用 Razor 语法在视图中访问@Model.SomeData
但是,我也明白我可以(应该?不应该?)使用 jQuery 的 HTTP方法从视图 get
中调用该方法:PopulateSomeViewModel()
$().get("/SomeController/PopulateSomeViewModel")
然后根据需要处理数据。
在 ASP.NET MVC 和一般的 MVC 设计中,第二种方法会很好还是在技术上是错误的?
解决方案
在 ASP.NET MVC 和一般的 MVC 设计中,第二种方法会很好还是在技术上是错误的?
每个都有自己的用法,所以没有对错之分。
第一种方法
public ActionResult Index()
{
SomeViewModel model = PopulateSomeViewModel();
return View( model );
}
@Model.SomeData
在 View 中访问模型。如果您想在同一个 HTTP 请求中访问 View 中的模型,它是一种强类型,并且是 MVC 中的常用方法。
第二种方法
$.ajax({
url: API_URL,
contentType: "application/json",
method: "GET",
data: JSON.stringify({"id": 1},
success: function(result) { return result; }
});
只有在页面完全加载后需要从客户端访问服务器端数据时,我们才使用 Ajax 。请注意,这是到服务器的往返行程,而不是第一种方法的替代品。
推荐阅读
- wso2 - 通过管理控制台批量删除身份服务器中的用户
- javascript - Cystoscape 超出画布边框
- python - 计算多个文本文件中的行数python
- bash - Jupyter Notebook 终端内的 shell 管道中出现意外的断管错误
- css - 尝试编译和输出源映射时,Gulp-sass 压缩样式似乎对我不起作用
- linux - sh 命令在我运行 Jenkins 阶段时给出“[[: not found” 错误
- sql - 在更新触发器之前更新列
- spring-integration - Spring Cloud Stream - 功能 - 如何手动确认rabbitmq消息?
- django - 使用 select_related 和 prefetch_related 的 Django 查询集
- reactjs - 从外部表组件访问选定的行数据