意見:
@if (Model.IsEventActive)
{
<div id="GameEvent">
//SomeCode
</div>
}
else
{
<div id="GameNonEvent">
//SomeCode
</div>
}
JS ファイル:
$('#btnNextEvent').click(function () {
$.ajax({
type: "POST",
url: "Game/UpdateUserEventInfo"
//success: function () {
// $("#GameEvent").hide();
//}
});
});
コントローラ:
[HttpPost]
public ActionResult UpdateUserEventInfo()
{
var user = _user;
_instance.Users.UpdateUserEventInfo(user);
return RedirectToAction("Index");
}
public ActionResult Index()
{
if (!_instance.Users.CheckUserSkillsExist(WebSecurity.CurrentUserName))
{
return RedirectToAction("CreateChar");
}
_instance.GameBase.GetBaseData();
var userModel = GetPlayerDisplayStats();
return View(userModel);
}
私の始まり IsEventActive = true;
ある時点での FullEvent ビューは、UpdateUserEventInfo への ajax 呼び出しをトリガーする私の JS メソッドを呼び出します。
したがって、基本的には、Controller メソッド UpdateUserEventInfo が起動され、DB が更新されてから、インデックス ビューが再度呼び出されると想定されています。インデックス ビューはモデルを再構築し、ビューを起動します。ビューは IsEventActive をチェックし、それに基づいて div を構築します。
IsEventActive が true であるため、ページには最初に GameEvent Div が表示されますが、インデックス ビューが ajax 呼び出しによって再度再構築されると表示されます。if-else ループは正しく続き、GameNonEvent div に移動して作成します。しかし、私はそれがページに表示されません。ページにはまだ GamEvent Div が表示されます。ビューがifステートメントに入らなかったとしても。
ページを更新すると、正しく表示されます。