Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改按钮状态(MVC)_C#_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

C# 更改按钮状态(MVC)

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) { &

我想建立一个类似twitter的微博网站,其他用户可以关注我的帖子

为此,我与所有当前注册的用户建立了一个页面。在每个名称前面都有“跟随/取消跟随用户”按钮。就像在推特上一样

看法-

@{
    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的代码正常工作:/