小编LaT*_*TeX的帖子

使用TempData ["id"]比使用隐藏字段跟踪往返HttpGet和HttpPost之间的ID更安全吗?

目的:

为了防止用户在往返(从调用HttpGet处理到HttpPost处理操作方法)之间篡改任何id(例如:CustomerId,UserId,ProductId等),我想使用TempData[].

但是,大多数人使用隐藏字段来跟踪ID.但我认为用户仍然可以篡改它们.

简而言之,

  1. 使用TempData["id"]比使用隐藏字段更安全地跟踪往返HttpGet和HttpPost之间的ID?
  2. 使用有什么不利之处TempData[]吗?

编辑1

在这种情况下,我TempData[]仅用于跟踪ID,而不用于其他字段.其他字段仍然向用户公开.

asp.net asp.net-mvc asp.net-mvc-3

3
推荐指数
1
解决办法
1308
查看次数

如何将强类型视图模型重定向并传递给另一个操作方法?

我有 2 个控制器:AliceControllerBobController. 每个都包含Index操作方法。视图模型很简单,如下所示:

class Foo{[Required]public int data{get;set;}}
Run Code Online (Sandbox Code Playgroud)

如何将强类型对象从 Alice 传递给 Bob?

class AlliceController: Controller
{

    [HttpPost]
     public ActionResult Index(Foo foo)
     {
         if(ModelState.IsValid)
         {
          // I want to pass foo to Bob's Index. How to do it?
           return RedirectToAction("Index","Bob");
          }
         else    return View();
     }
}
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc

2
推荐指数
1
解决办法
2938
查看次数

是否可以将封装Person的ViewModel对象传递给Create视图,但只能从POST Create操作方法接收Person对象?

我有一个域模型和一个视图模型如下:

领域模型:

namespace MvcApplication1.Models
{
    public enum Sex { Male, Female };
    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }

        [Required(ErrorMessage="Please select either Female or Male.")]
        public Sex? Sex { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

查看型号:

namespace MvcApplication1.ViewModels
{
    public class HomeCreateVM
    {
        public HomeCreateVM()
        {
        }
        public HomeCreateVM(Person p)
        {
            Person = p;
            SelectList = p.Sex.GetSelectList();
        }
        public Person Person { get; set; }
        public SelectList SelectList { get; …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-mvc-3

2
推荐指数
1
解决办法
891
查看次数

我们可以简化表达式Model == null吗?新的SelectList(性别,"值","文本"):新的SelectList(性别,"值","文本",模型);?

Model == null ? 
new SelectList(genders, "Value", "Text") : 
new SelectList(genders, "Value", "Text", Model);
Run Code Online (Sandbox Code Playgroud)

我想避免写new SelectList(genders, "Value", "Text"两次,是否可能?

c#

1
推荐指数
1
解决办法
285
查看次数

当没有与给定id关联的记录时,action方法应该执行哪些操作?返回NoFound视图或重定向到NoFound操作方法?

Details,Edit,Delete操作方法,我们有id参数,从数据库中检索相应的记录.

如果没有记录对应id,我们有两个选择:

执行操作方法返回一个特定视图,通常命名为 目录NoFound.cshtmlViews\Shared,以通知用户该 视图 id无效.

要么

执行操作方法将用户重定向到特定的操作方法,例如public ActionResult NoFound (string message),以通知用户该问题.

我的问题是:当没有与给定id关联的记录时,action方法应该执行哪些操作?返回NoFound视图还是重定向到NoFound动作方法?

编辑1 我需要从技术角度出发的理由,例如安全性和性能.

asp.net asp.net-mvc asp.net-mvc-3

0
推荐指数
1
解决办法
120
查看次数

标签 统计

asp.net-mvc ×4

asp.net-mvc-3 ×3

asp.net ×2

c# ×1