asp .net mvc 3 で Web サイトを構築しています。
「お気に入りに追加」と「お気に入りから削除」に使用できるシンプルなトグルボタンを作成しようとしています。ただし、ユーザーがログインしている場合にのみこの機能が必要です。それ以外の場合は、ユーザーを「ログイン」ページに誘導します。
トグル ボタンはうまく機能しますが、ユーザーがログインしているかどうかはチェックしません。ユーザーがログインしていない場合、ボタンをクリックすると切り替えられますが、データベースは更新されません。ログインページに誘導したい。
私のコードは以下の通りです:
意見:
<div class="save-unsave-link">
@if(Model.IsPropertySaved) {
@Html.ActionLink("Remove Property", "RemoveSavedProperty", "Property", new { id = Model.Property.PropertyId }, new { @class="unsave-property", onclick = "saveProperty();" })
} else {
@Html.ActionLink("Save Property", "AddSavedProperty", "Property", new { id = Model.Property.PropertyId }, new { @class="save-property", onclick = "saveProperty();" })
}
</div>
jQuery:
function saveProperty() {
$('.save-unsave-link').delegate("a", "click", function (e) {
var id = $(this).attr('href').match(/\d+/);
if ($(this).hasClass('unsave-property')) {
$.ajax({
url: this.href,
dataType: "text json",
type: "POST",
data: {},
success: function (data, textStatus) { }
});
$(this).removeClass().addClass("save-property")
.attr('href', '/Property/RemoveSavedProperty/' + id)
.text('Remove Property');
e.preventDefault();
} else {
var id = $(this).attr('href').match(/\d+/);
$.ajax({
url: this.href,
dataType: "text json",
type: "POST",
data: {},
success: function (data, textStatus) { }
});
$(this).removeClass().addClass("unsave-property")
.attr('href', '/Property/AddSavedProperty/' + id)
.text('Save Property');
e.preventDefault();
}
});
}
コントローラ:
//
// POST: /Property/AddSavedProperty
[HttpPost]
[Authorize]
public void AddSavedProperty(int id)
{
websiteRepository.AddSavedProperty(id);
}
//
// POST: /Property/RemoveSavedProperty
[HttpPost]
[Authorize]
public void RemoveSavedProperty(int id)
{
websiteRepository.RemoveSavedProperty(id);
}
ユーザーがajax投稿の前にログインしているかどうかを確認するにはどうすればよいですか? 彼がログインしていない場合、どうすれば彼をログインページに誘導できますか?