gpt4 book ai didi

c# - 处理 ASP.NET MVC 应用程序的参数

转载 作者:行者123 更新时间:2023-11-30 22:13:09 24 4
gpt4 key购买 nike

我正在从事我们公司的 ASP.NET MVC 4 项目。它是基于收入的应用程序,它在应用程序的每个 Controller 和操作中都有一些过滤器。它们像一些过滤器一样是年和季度。对于这些过滤器更改,我使用了 Create Base Model,(它包含这些过滤器值)以及从该 Base Model 继承的所有其他模型。Base Model 在 @layout View 中使用。过滤器的每次更改都应更新 View 。布局 View 中的基本模型是这样的

public class BaseModel
{
public string YearSelected{ get; set;}
public string QuarterSelected{ get; set;}
}

其他模型都是继承自这个BaseModel

public class RevenueModel:BaseModel
{
// other stuff
}


对于所有这些我正在通过参数发送的东西。看起来像现在参数是增加要求是更改以添加更多参数
1.我想知道handle的方法是否正确,如果方法不够请给我最好的建议 处理此参数更改的方法。

2.在UI(View)中,
当用户通过选中单选按钮更改 View 并单击应用过滤器按钮时,我正在使用 jquery 来处理此问题,

window.href='Url Action with new Parameters';
window.href='@Url.Action("SomeAction","Controller",new{ // those all parameters } ';

当按钮点击时window.href会自动调用和更新我想知道的view
这个方法是否Robust?建议我处理这种情况的最佳方法。

“如果我使用 jquery 调用一个 Action 并为调用 Controller Action 使用大量参数,我只是需要一个答案”

最佳答案

您所做的是可行的,但正如@ps2goat 指出的那样,如果 URL 中的 GET 参数过多,您可能会遇到问题。

但正确答案取决于过滤器的使用方式。用户会经常更换过滤器还是很少更换过滤器?如果希望用户浏览您的应用并且很少更改过滤器,我建议您使用另一种方法而不是将参数作为 GET 参数包含在 URL 中,因为:

  1. 如@ps2goat 指出的那样,如果 URL 的总长度变得太长,您可能会遇到问题。
  2. 您可能会遇到用户体验问题。如果用户为页面添加了书签,然后更改了他的过滤器,并使用书签返回到之前的页面,他的过滤器将被还原,这可能不是他所期望的。
  3. 它看起来不会很漂亮。您网站上的所有网址都类似于 /controller/action/?YearSelected=2014&QuarterSelected=1&Parameter3=2&Parameter4=8,这也可能会产生您需要注意的 SEO 问题。

在这种情况下,我建议您考虑使用 cookie 或将用户的过滤器保存在服务器上。 (但最好不要在 session 中,因为这会给您的应用程序带来可伸缩性问题)。如果您使用 cookie,则用户的过滤器将在每次请求时自动对您的 Controller 操作可用,因为 cookie 将与每个请求一起发送。 (当然,在考虑使用哪种策略时,这也是要记住的事情。如果您有大量 cookie 数据,这将减慢您的应用程序的感知响应速度,因为 cookie 数据必须与每个请求一起发送到你的服务器。所以保持你的 cookie 数据尽可能小)

另一方面,如果您希望用户经常更改过滤器,甚至可能在同一页面上多次更改过滤器,您可以考虑使用 jQuery 对 MVC Controller 执行异步 POST,使用 JSON 检索必要的数据,并更新 View 。这实际上并不像听起来那么困难。

要实现它,您需要做的是在您的页面上创建一个 Javascript 函数,该函数将您的参数提交给您的 Controller 操作。您也可以将数据作为 JSON 发送到 Controller 操作。像这样的东西可以工作:(未经测试的代码)

<script>
function submitFilters() {
var parameters = {
parameter1: $('#parameter1').val(),
parameter2: $('#parameter2').val(),
...
};
$.ajax('@Url.Action("SomeController", "SomeAction")', {
contentType: 'application/json',
data: JSON.stringify(parameters),
success: function(data) {
alert('Received data back from server. Ready to update the view.');
}
};
}
</script>

然后您将连接过滤器(单选按钮、下拉菜单等)以调用方法 submitFilters

只要属性名称匹配,MVC 就会自动将从客户端接收到的 JSON 数据转换为您的 C# ViewModel。然后你可以在服务器上做任何你需要的查询和过滤,然后将数据作为操作的结果发回。 (伪代码)

public ActionResult SomeAction(MyViewModel vm)
{
var data = SomeRepository.GetData(vm.Parameter1, vm.Parameter2, ...);
return Json(data);
}

然后你只需要在接收到数据时更新 View 。您最好为此使用模板引擎,但这当然不是必需的。

这只是一个粗略的例子,说明如何做到这一点。通常我会创建一个 Knockout查看模型以封装所有内容。但这应该可以帮助您入门。

关于c# - 处理 ASP.NET MVC 应用程序的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19346830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com