c# – 使用TempData在控制器 *** 作之间传递细节不好吗?

c# – 使用TempData在控制器 *** 作之间传递细节不好吗?,第1张

概述我有某些情况需要在控制器 *** 作之间传递一个值. >将returnUrl从视图传递到所有嵌套视图时.在里面 我有 @{ TempData["returnURL"] = Request.Url.AbsoluteUri;} 然后以类似的方式访问它(在我的真实版本中我 检查密钥是否在TempData中,并且returnURL是真实的 网址): return Redirect(TempData["re 我有某些情况需要在控制器 *** 作之间传递一个值.

>将returnUrl从视图传递到所有嵌套视图时.在里面
我有

@{   TempData["returnURL"] = Request.Url.absoluteUri;}

然后以类似的方式访问它(在我的真实版本中我
检查密钥是否在TempData中,并且returnURL是真实的
网址):

return Redirect(TempData["returnURL"].ToString());

如果它需要继续第一页更改(即搜索
页面 – >修改页面 – >编辑部分页面)我再次添加它

TempData["returnURL"] = TempData["returnURL"];

>当我需要从一个控制器动作传递一个值到一个
查看由AJAX调用的另一个控制器 *** 作,例如
这里:

public VIEwResult Index(FormCollection form){   var model = new GrIDColumnChooserviewmodel();   //Select deleted/not deleted rows   if (form.HasKeys())       model.ShowRows = (form["deletedDropDown"] == null) ?                                                  "Active" :                                                  GetoptionByname(form["deletedDropDown"]);   TempData["ShowRows"] = model.ShowRows;   ...}

然后在我的另一个AJAX调用的动作控制器中我访问它:

public JsonResult GetData(){   //Select deleted/not deleted rows   var showRows = (TempData.ContainsKey("ShowRows") && TempData["ShowRows"] == null) ?                                           "Active" :                                           GetoptionByname(TempData["ShowRows"].ToString());   //refresh tempdata showrows so it is there for next call   TempData["ShowRows"] = model.ShowRows;   return this.GetDataSource(showRows);}

我的问题是,这是非常糟糕的做法吗?根据我对它的理解,我基本上使用TempData就像一个会话cookie.有没有更好的方法来实现这一点,比如使用实际的cookie?

解决方法 是的,我会说这通常是不好的做法.虽然VIEwData字典方法快速且相当容易实现,但它可能导致拼写错误和编译时未捕获的错误.另一种方法是使用viewmodel模式,该模式允许您为需要公开其中的值或内容的特定视图使用强类型类.最终为您提供类型安全和编译时间检查以及intellisense.

我的第一选择是使用视图模型.如果这不适合,那么使用会话状态可能就好了.

总结

以上是内存溢出为你收集整理的c# – 使用TempData在控制器 *** 作之间传递细节不好吗?全部内容,希望文章能够帮你解决c# – 使用TempData在控制器 *** 作之间传递细节不好吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1233894.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存