C# 更改按钮状态(MVC)
我想建立一个类似twitter的微博网站,其他用户可以关注我的帖子 为此,我与所有当前注册的用户建立了一个页面。在每个名称前面都有“跟随/取消跟随用户”按钮。就像在推特上一样 看法-C# 更改按钮状态(MVC),c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,我想建立一个类似twitter的微博网站,其他用户可以关注我的帖子 为此,我与所有当前注册的用户建立了一个页面。在每个名称前面都有“跟随/取消跟随用户”按钮。就像在推特上一样 看法- @{ ViewBag.Title = "Users"; } @model MembershipUserCollection @foreach (MembershipUser item in Model) { if(User.Identity.Name != item.UserName) { &
@{
ViewBag.Title = "Users";
}
@model MembershipUserCollection
@foreach (MembershipUser item in Model)
{
if(User.Identity.Name != item.UserName)
{
<li>@item.UserName
<span id="sp-@item.UserName"><input id="@item.UserName" name="submit" type="submit" value="Follow" class="follow-user fg-button ui-state-default"/></span>
</li>
}
}
<script type="text/javascript">
$(".follow-user").live("click", function (e) {
e.preventDefault();
var data = $(this).attr("id");
var spid = '#sp-' + data;
var btnid = '#' + data;
var val = $(this).attr('value');
$.ajax({
type: "POST",
url: "User/FollowUser",
data: { id: data },
cache: false,
dataType: "json",
success: function () {
if (val == 'Follow') {
$(btnid).attr('value', 'Unfollow');
}
else {
$(btnid).attr('value', 'Follow');
}
}
});
});
</script>
控制器-
public ActionResult Index()
{
return View(Membership.GetAllUsers());
}
public void FollowUser(string id)
{
ViewData["test"] = "test";
var n = FollowingUser.CreateFollowingUser(0);
n.FollowingId = id;
n.FollowerId = User.Identity.Name;
string message = string.Empty;
var list = new List<FollowingUser>();
list = (from a in db.FollowingUsers where a.FollowerId == User.Identity.Name && a.FollowingId == id select a).ToList();
if (list.Count() == 0)
{
try
{
db.AddToFollowingUsers(n);
db.SaveChanges();
}
catch (Exception ex)
{
message = ex.Message;
}
}
else
{
db.DeleteObject((from a in db.FollowingUsers where a.FollowerId == User.Identity.Name select a).FirstOrDefault());
db.SaveChanges();
}
}
下表-
现在我想改变页面加载检查数据库上的按钮状态,不管他是否已经被跟踪
例如,如果用户已经遵循了它应该显示如下
当您向显示此按钮的用户显示此视图时,如果该用户是否在跟踪,请同时加载状态
public ActionResult Index()
{
var model = new MemberShipViewModel();
//We check here if the logged in user is already following the user being viewd
foreach(var member in Membership.GetAllUsers())
{
var user = (from a in db.FollowingUsers where a.FollowerId == User.Identity.Name && a.FollowingId == member.UserName select a).FirstOrDefault();
model.Members.Add(new Member{UserName = member.UserName,IsFollowing=user!=null});
}
//This line will remove the logged in user.
model.Members.Remove(model.Members.First(m=>m.UserName==User.Identity.Name));
return view(model);
}
在索引视图模型中,需要进行一些更改
@model MemberShipViewModel
@foreach (var item in Model)
{
<li>@item.UserName
if(!item.IsFollowing)
{
<span id="sp-@item.UserName"><input id="@item.UserName" name="submit" type="submit" value="Follow" class="follow-user fg-button ui-state-default"/></span>
}
else
{
<span id="sp-@item.UserName"><input id="@item.UserName" name="submit" type="submit" value="Follow" class="unfollow-user fg-button ui-state-default"/></span>
}
</li>
}
$.follow-user.liveclick,函数e{
e、 防止违约;
var data=$this.attrid;
变量spid='sp-'+数据;
var btnid=+数据;
var val=$this.attr'value';
$.ajax{
类型:POST,,
url:User/FollowUser,
数据:{id:data},
cache:false,
数据类型:json,
成功:功能{
如果val==‘Follow’{
$btnid.attr'value','Unfollow';
}
否则{
$btnid.attr'value','Follow';
}
}
};
};
您现在需要编写一些javascript。没有人会为你编写完整的软件。
看来你缺少了一些基本的编程技巧
干杯我也要做模特吗?谢谢。你能解释一下这句话吗?SomeRepository.IsFollowingLoggedInUser.Id,Id什么是SomeRepository,IsFollowing,LoggedInUser.Id和Id?在这个类中,您将检查登录的用户是否在跟踪正在查看的用户,或者如果您想在这里编写代码,您可以。只是我有点上瘾的杂音:我不喜欢在视图中有显式的if,我更喜欢在模型中添加属性或在ViewDataHmm中添加标签。有人能给我明确的控制器,视图和模型,我需要做上述任务吗?我无法让Parminder的代码正常工作:/