使用out参数和通过引用错误
本文关键字:引用 错误 out 参数 使用 | 更新日期: 2023-09-27 18:22:04
我正在构建一个发送模拟文本消息的MVC应用程序,其中有两个模型:Contacts和Textmessages。
当用户创建Textmessage时,视图要求用户输入电话号码和消息。提交后,控制器会在允许创建消息之前验证数据库中是否存在电话号码(联系人)。
如果联系人存在,确认屏幕需要显示信息详细信息(电话号码和信息)以及收件人的姓名。
我正在使用out参数以字符串形式发回名称信息,但我收到了一个错误:
无法在控制器"SMSText.Controllers.TextmessagesController"上调用操作方法"System.Web.Mvc.ActionResult Create(SMSText.Models.Textmessage,System.String ByRef,System.String By Ref)",因为参数"System.String&"firstName"是通过引用传递的。
这是我正在使用的代码:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create( [Bind(Include =
"ID,Message,EnteredPrefix,EnteredPhoneNumber")] Textmessage textmessage,
out string firstName, out string surName )
{
firstName = "";
surName = "";
if (ModelState.IsValid)
{
bool exists = db.Contacts.AsEnumerable()
.Where(contact => contact.AreaCode == textmessage.EnteredPrefix && contact.PhoneNumber == textmessage.EnteredPhoneNumber)
.Count() >0;
if (exists)
{
var contactObj = db.Contacts.First(contact => contact.AreaCode == textmessage.EnteredPrefix && contact.PhoneNumber == textmessage.EnteredPhoneNumber)
firstName = contactObj.Forename;
surName = contactObj.Surname;
db.Textmessages.Add(textmessage);
db.SaveChanges();
return RedirectToAction("Details", textmessage );
}
else
{
return View("Error", textmessage);
}
}
return View(textmessage);
}
如果我理解错误消息,则名称信息将作为引用而不是实际字符串传递,但我不知道如何解决此问题。
我怎样才能克服这个错误?有没有更好的方法来完成我正在做的事情?
您试图使用参数,似乎不必要地过度扼杀了调用。为什么不在找到匹配的联系人后简单地使用ViewData,然后在视图中使用呢?
var contact = db.Contacts.AsEnumerable()
.Where(contact => contact.AreaCode == textmessage.EnteredPrefix && contact.PhoneNumber == textmessage.EnteredPhoneNumber);
if(contact != null && contact.Any())
{
ViewData["Contact"] = contact.FirstOrDefault();
db.Textmessages.Add(textmessage);
db.SaveChanges();
return RedirectToAction("Details", textmessage );
}
and then in the view you can read it back:
@{
var contact = (Contact)ViewData["Contact"];
}
请告诉我它是如何为你工作的。。。