Asp.net mvc 在ASP.NET MVC中单击ActionLink后如何保持在同一页面上?

Asp.net mvc 在ASP.NET MVC中单击ActionLink后如何保持在同一页面上?,asp.net-mvc,actionlink,Asp.net Mvc,Actionlink,我是ASP.NET MVC新手。我正在制作我的Web应用程序,希望实现从列表中添加朋友,在单击链接“Dodaj”(英文:“Add”)后,我想保存我的朋友,但要保持在同一页面上,并且只更新我的列表 在我的profile.cshtml中,我有: @foreach (var item in Model.neprijatelji) { <tr> <td> @Html.DisplayFor(modelItem => item.I

我是ASP.NET MVC新手。我正在制作我的Web应用程序,希望实现从列表中添加朋友,在单击链接“Dodaj”(英文:“Add”)后,我想保存我的朋友,但要保持在同一页面上,并且只更新我的列表

在我的profile.cshtml中,我有:

@foreach (var item in Model.neprijatelji)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.IME_GOSTA)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.PREZIME_GOSTA)
        </td>

        <td>

            @Html.ActionLink("Dodaj", "Dodaj", new { id = item.EMAIL_GOSTA })

        </td>
    </tr>
}
我得到的结果是找不到错误404。我知道这是错误的,但我应该如何实施

更新: 以下是我尝试过的: 在我的profile.cshtml中,我完成了以下工作: 以下是我尝试的内容:在Profil.cshtml中,我有以下内容:

    @foreach (var item in Model.neprijatelji)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.IME_GOSTA)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.PREZIME_GOSTA)
        </td>

        <td>
            <a href="#" onclick="AddFriend(this)" data-id='@item.EMAIL_GOSTA' > Dodaj </a>

            <script>
                function AddFriend(ele)
                {
                    var values={id:$(ele).attr('data-id')};
                    $.post("/Profil/Dodaj", values, function (abc) {
                        var result=$.parseJSON(abc)
                        if (result.isAdded == "success") { alert("I just added this alert that my if isn't empty"); }
                            //Logic to append tr to existing table
                        else { alert("Some alert"); }
                        //raise exception or alert maybe.

                    });
                } 
                </script>
                </td>
当我在JavaScript函数上设置断点时,我得到: 断点将不会被命中。没有与此行关联的可执行代码

当我点击“Dodaj”时,它似乎只识别href=“#”,因为从链接:然后我得到


此外,我还需要做一些额外的设置才能使我的JavaScript代码正常工作。我是否应该将JS代码保存在不同的文件中,然后保存到Profil.cshtml中?

这里不要使用操作链接,而是尝试使用ajax post。并从操作Dodaj返回JSON结果。然后,如果返回的结果是成功的,则通过Jquery向表追加一个新的tr,否则返回一个错误

@foreach (var item in Model.neprijatelji)
{
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.IME_GOSTA)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.PREZIME_GOSTA)
    </td>

    <td>
    <a href="#" onclick="AddFriend(this)"  data-id='@item.EMAIL_GOSTA'/>
    </td>
</tr>
}

虽然我还没有测试代码,但方法应该是这样的。

这里不要使用操作链接,而是尝试使用ajax post。并从操作Dodaj返回JSON结果。然后,如果返回的结果是成功的,则通过Jquery向表追加一个新的tr,否则返回一个错误

@foreach (var item in Model.neprijatelji)
{
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.IME_GOSTA)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.PREZIME_GOSTA)
    </td>

    <td>
    <a href="#" onclick="AddFriend(this)"  data-id='@item.EMAIL_GOSTA'/>
    </td>
</tr>
}

虽然我没有测试代码,但方法应该是这样。

Profil操作与
Dodaj
操作在同一控制器中吗?如果没有,则必须明确给出
Profil
所在的控制器名称。否则,您将继续收到404错误在尝试将某人添加到列表时,您可能希望查看“Dodaj”与“Profil”操作在同一控制器中。
Profil
操作与
Dodaj
操作在同一控制器中吗?如果没有,则必须明确给出
Profil
所在的控制器名称。否则,您将继续收到404错误在尝试将某人添加到列表时,您可能需要查看“Dodaj”与“Profil”操作在同一控制器中。我做了所有事情,就像您做的一样。在my Profil.cshtml中,从未调用此JavaScript函数:(问题是什么?你看到浏览器控制台了吗?那里有没有javascript错误。你能发布代码以便我们调试和解决问题吗?我所做的是:请将razor代码和javascript代码分开。它也可以写在同一个cshtml文件中。即使它在url中添加了#,您也删除了href以避免出现这种情况。可能的问题是函数正在被调用,但JQUery可能有问题,因为您看到$。post不是一个简单的javascipt函数。因此,请在布局中添加JQUery js以支持这些函数。我做了所有事情。在我的Profil.cshtml中,这是一个JavaScript函数从未有人打电话给你(问题是什么?你看到浏览器控制台了吗?那里有没有javascript错误。你能发布代码以便我们调试和解决问题吗?我所做的是:请将razor代码和javascript代码分开。它也可以写在同一个cshtml文件中。即使它将#添加到url中,您也可以删除href以避免此情况。可能的问题是函数正在被调用,但JQUery可能存在问题,因为您看到$。post不是一个普通的javascipt函数。因此,请在布局中添加JQUery js以支持这些函数。
@foreach (var item in Model.neprijatelji)
{
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.IME_GOSTA)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.PREZIME_GOSTA)
    </td>

    <td>
    <a href="#" onclick="AddFriend(this)"  data-id='@item.EMAIL_GOSTA'/>
    </td>
</tr>
}
<script>
function AddFriend(ele)
{
   var values={id:$(ele).attr('data-id')};
   $.post(someRootPath + "/Profil/Dodaj", values, function (abc) {
   var result=$.parseJSON(abc)
   if(result.isAdded=="success")
     //Logic to append tr to existing table
   else
     //raise exception or alert maybe.

    });
}
    public JsonResult Dodaj( string id)
    {
        string posiljalac = Session["idGosta"].ToString();
        PRIJATELJI pr = new PRIJATELJI();
        pr.EMAIL_GOSTA = posiljalac;
        pr.EMAIL_GOSTA1 = id;
        pr.PRIJATELJI_OD = System.DateTime.Now;
        try{
        db.PRIJATELJIs.Add(pr);

        db.SaveChanges();
        return Json(new { isAdded = "success"}, JsonRequestBehavior.AllowGet);
        } 
        catch (Exception ex)
        {
            return Json(new { isAdded = "failure" }, JsonRequestBehavior.AllowGet);
        }
    }