我在索引视图中有以下代码
public ActionResult Index(string searchBy, string search)
{
Session["FullName"] = search;
var dbsenderPostal = (from a in db.TblCUSTOMER_PROFILE
where a.FullName == search
select a.PostalAddress).ToArray();
Session["PostalAddress"] = dbsenderPostal;
if (searchBy == "XXX")
{
return View(db.TblCUSTOMER_PROFILE.Where(senders =>
senders.GeneratedCode == search || search == null).ToList());
}
else
{
return View(db.TblCUSTOMER_PROFILE.Where(senders =>
senders.CustomerFullName.StartsWith(search) || search ==
null).ToList());
}
}
在我的[HttpPost] MorePost视图中,我使用具有值对的Sessions将数据传递给此'MorePost'后置控制器。如果我将.Split()方法添加到'ViewBag.messages2',则会出现另一个错误,因为“'System.Array'不包含split的定义”。这是从在线进一步研究来解决这个问题。我正在对ViewBag的LINQ查询做错,这是将数据传递给对象名称'sentprint'。我能够从LINQ查询中检索数据为“ P.O.Box AX 33 Miami ”。我也试过使用'TempData'。 喜欢这个TempData [“PostalAddress”]。 我确实尝试了其他方法,给出了其他错误“无法将类型'System.Data.Entity.Infrastructure.DbQuery'隐式转换为'string'”。对不起,我是LINQ查询的新手。在此先感谢。
[HttpPost]
public ActionResult MorePost(string Itemn)
{
TblSENDERSINFORMATION sentprint = new TblSENDERSINFORMATION();
ViewBag.messages = Session["FullName"];
sentprint.NameOfSender = ViewBag.messages;
ViewBag.messages2 = Session["PostalAddress"];
sentprint.PostalAddress = ViewBag.messages2; //Error found here
sentprint.Item = Itemn;
}
答案 0 :(得分:2)
您的问题出在linq查询中,让我解释原因
在您的查询中,您将获得一个字符串数组
.ToArray()
即使它只是一个项目,它也是一个包含一个项目的字符串数组
var dbsenderPostal = (from a in db.TblCUSTOMER_PROFILE
where a.FullName == search
select a.PostalAddress).ToArray();
因此,您的解决方案非常简单,只需通过 FirstOrDefault()更改 ToArray(),这样您将始终只获得一个字符串项(如前1名)但略有不同)
所以你的查询应该是这样的
var dbsenderPostal = (from a in db.TblCUSTOMER_PROFILE
where a.FullName == search
select a.PostalAddress).FirstOrDefault();
现在你的会话变量将是一个字符串。
在这种情况下,您必须了解更好的linq和泛型。
答案 1 :(得分:0)
这是一个为什么你不应该使用var的例子,直到你知道你在做什么。
使用强类型,除非您能够以软类型读取代码。
string[] dbsenderPostal = (from a in db.TblCUSTOMER_PROFILE
where a.FullName == search
select a.PostalAddress).ToArray();
字面意思是:
ViewBag.messages2 = Session["PostalAddress"];
sentprint.PostalAddress = ViewBag.messages2
因此:
{{1}}
这没有任何意义,你确实试图将字符串[]放入字符串中。