Có điều gì đó thực sự kỳ lạ xảy ra trong ứng dụng MVC khiến tôi phát điên. Trên trang MVC của tôi, sau khi người dùng được chọn, đăng nhập của nó phải được "hiển thị" hai lần trên HTML. Khi theo hình thứcMVC tài sản điên mất giá trị của nó. Html.HiddenFor có lỗi không?
FrmNextStep('<Login>', ...
(where Model.SelectedUser.Login is used)
và một lần theo hình thức
<input id="SelectedLogin" name="SelectedLogin" value="<Login>" type="hidden">
(where "Model".SelectedLogin is used)
nhưng điều thứ hai luôn luôn trống. Nó thực sự kỳ lạ bởi vì, mặc dù hai cuộc gọi không được chính xác như nhau, giá trị trả lại nên được.
if (Model.SelectedUser != null)
{
<span>Some value</span>
<script type="scriptADResultComplete">
@{
var script = String.Format(
@"FrmNextStep('{0}', '{1}', '{2}');"
, Model.SelectedUser.Login.Replace("'", @"\'")
, Model.SelectedUser.FirstName.Replace("'", @"\'")
, Model.SelectedUser.LastName.Replace("'", @"\'")
);
@Html.Raw(script);
}
</script>
}
<input type="hidden" name="hfAction" />
<input type="hidden" name="hfUserLogin" />
@Html.HiddenFor(m => m.CurrentPage, new { id = "hfCurrentPage" })
@Html.HiddenFor(m => m.SelectedLogin);
private User selectedUser;
public User SelectedUser
{
get
{
if (this.selectedUser == null)
{
this.selectedUser = this.AllUsers.FirstOrDefault(user => user.Selected) ?? User.DefaultUser;
}
if (this.selectedUser == User.DefaultUser)
{
return null;
}
return this.selectedUser;
}
set
{
this.AllUsers.ForEach(user => user.Selected = (user == value));
this.selectedUser = null;
}
}
public string SelectedLogin
{
get
{
return (this.SelectedUser ?? User.DefaultUser).Login;
}
set
{
this.SelectedUser = this.AllUsers.FirstOrDefault(user => user.Login == value);
}
}
Và khi tôi gỡ lỗi mã, lệnh gọi duy nhất để đăng nhập được chọn trong giai đoạn "hiển thị" và trả lại thông tin đăng nhập chính xác.
Có lỗi nào với Html.HiddenFor không?
Tài sản bất động sản ... –