MVC5 - 从Controller传递字符串到视图 - 完全相同的代码返回不同的结果

时间:2016-11-15 00:07:31

标签: c# asp.net-mvc-5

我在我的代码中从2个点运行MVC5中的相同代码,一个将我的电子邮件地址传递给视图,另一个没有,我错过了一些基本的东西!!!

Code1(工作正常): 我的vUsersSecurityQuestion类,它将我的emailAddress从控制器传递到视图:

public partial class vUsersSecurityQuestion
{
    public int userID { get; set; }
    public string firstName { get; set; }
    public string lastName { get; set; }
    public string securityQuestion { get; set; }
    public string securityQuestionAnswer { get; set; }
    public string emailAddress { get; set; }
}

我的控制器代码工作(引用上面的ChangePWSeqQuestionViewModel作为返回控制器的模型):

ViewBag.dropdownSecQues = new SelectList(db.vNewSecurityQuestions.ToList(), "securityQuestionID", "securityQuestion");
ViewBag.EmailAddress = model.emailAddress;
var secQuestions = from q in db.vNewSecurityQuestions
                  select q;
var userInfo = from u in db.vUsers
               where u.emailAddress == model.emailAddress
               select u;
var model1 = new ChangePWSeqQuestionViewModel { viewUserAdmin = userInfo.ToList()};

我的LoginViewModel类(不会将我的用户名(与上面的电子邮件地址相同)从控制器传递到视图:

public class LoginViewModel
{
    [Required]
    [Display(Name = "Email:")]
    public string Username { get; set; }

    [Required]

    [DataType(DataType.Password)]
    [Display(Name = "Password:")]
    public string Password { get; set; }
}

我的控制器代码(不起作用)引用LoginViewModel类作为传递给控制器​​的模型:

ViewBag.dropdownSecQues = new SelectList(db.vNewSecurityQuestions.ToList(), "securityQuestionID", "securityQuestion");
var secQuestions = from q in db.vNewSecurityQuestions
                   select q;
 var userInfo = from u in db.vUsers
                where u.emailAddress == model.Username
                select u;
 var model1 = new ChangePWSeqQuestionViewModel {viewUserAdmin = userInfo.ToList()};
  //Pass username and current password to view and force the user to change their password
 return View("ChangePWSecQuestion", model1);

我的观点:

 @Html.HiddenFor(m => m.emailAddress)

我希望我错过了一些明显的东西......一直盯着这个2小时+ 当我运行第一个代码时,我得到了隐藏字段,但是当我运行第二个代码时却没有。我无法弄清楚为什么?它们从2个不同的控制器运行..工作的控制器来自不同的控制器(并且必须重定向到正确的视图文件夹)。不起作用的那个来自同一个控制器,但是emailAddress没有被传回。 LINQ(var UserInfo)查询都返回单行数据......

1 个答案:

答案 0 :(得分:0)

好的......我想出了另外两种方法,(但我仍然不知道为什么它只在某些时候起作用)。

您可以直接在模型中设置变量,例如:\PhpOffice\PhpWord\Shared\Html::addHtml($section, $htmlString); 。我以前试过这个,但没有emailAddress = model.emailAddress.ToString()

ToString()

然后在我看来,我能够做到以下任何一种情况,并且每次似乎都有效:

var model1 = new ChangePWSeqQuestionViewModel { viewNewSecurityQuestions = secQuestions.ToList(), viewUserAdmin = userInfo.ToList(), emailAddress = model.emailAddress.ToString() };

我生命中的三个小时我永远不会回来......希望它能为其他人节省那么多X1000 ......太光滑了。我确定这可能是个老消息,但对我来说真是太棒了!