【问题标题】:Dictionary loses value when passed as a parameter?字典作为参数传递时会失去价值吗?
【发布时间】:2014-05-13 13:48:01
【问题描述】:

我正在使用 MVC,我在重定向到某个操作之前填充了一些值,在此期间我的字典的计数始终为 0?

我在它通过之前检查计数,它是否超过 0,但当它通过另一侧时始终为 0。

我也传递了其他字符串值,但它们都很好。

我的重定向到行动。

return RedirectToAction(
    "APNewQuote", 
    new { 
        OENumber = "", QuoteNumber = "", ClaimNumber = ClaimNumber,
        MotorBodyRepairer = "", VehicleRegistration = vRegistration,
        vehicleMakeId = "", vehicleModelId = "", vehicleRangeId = "",
        vehicleMakeModels = "", vehicleModelCode = "",
        year = vYear, OEParts = OEParts }
);

接收值的我的操作结果。

public ActionResult APNewQuote(string OENumber, string QuoteNumber, string ClaimNumber,
    string MotorBodyRepairer, string VehicleRegistration, int? vehicleMakeId,
    int? vehicleModelId, int? vehicleRangeId, string vehicleMakeModels,
    string vehicleModelCode, int? year, Dictionary<string,string> OEParts )

谁能告诉我如何防止这种情况发生。

【问题讨论】:

标签: c# asp.net-mvc dictionary


【解决方案1】:

我认为字典没有被序列化。如解释in this question's answerIf you need to pass in some-what complex objects to an action after a redirect, you probably want to use either a Session or TempData:

因此,将您的字典保存到 TempData 或 Session 对象中。

用法:

// save
TempData["myDictionary"] = OEParts;


// retrieve
var myDic = TempData["myDictionary"] as Dictionary<string,string>;

HttpContext.Session Property

ControllerBase.TempData Property

【讨论】:

  • 如何将字典保存到 TempData 中
【解决方案2】:

试试这个

    var oem = new Dictionary<string, string>();
        DataTable dt = DataAccessLayer.GetPartsDamaged()
        foreach(DataRow row in dt.Rows)
        {
            oem.Add(row["key"].ToString(),row["value"].ToString());
        }

    return RedirectToAction("APNewQuote", new { OENumber = "", QuoteNumber = "", ClaimNumber = ClaimNumber, MotorBodyRepairer = "", VehicleRegistration = vRegistration, vehicleMakeId = "", vehicleModelId = "", vehicleRangeId = "", vehicleMakeModels = "", vehicleModelCode = "", year = vYear, OEParts = oem});

【讨论】:

  • 我的字典在 1 - 200 个键值对之间,我需要为每个键值对添加它吗?
  • 从哪里获得 1-200 个键值对?来自数据库?
  • 来自汽车零件损坏的 PDF
  • 然后将这些值插入 db 并在代码中循环并构造字典。
  • 我不认为通过重定向传递字典所需的一切。我认为@Csteinmueller 对 TempDate 有正确的想法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 2021-09-27
  • 2013-07-30
  • 2021-12-14
  • 2019-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多