Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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
动作调用Javascript函数_Javascript_Asp.net Mvc_Entity Framework_Asp.net Mvc 5 - Fatal编程技术网

动作调用Javascript函数

动作调用Javascript函数,javascript,asp.net-mvc,entity-framework,asp.net-mvc-5,Javascript,Asp.net Mvc,Entity Framework,Asp.net Mvc 5,我有一个发送到控制器1参数的Url操作链接,但我需要该参数调用javascript函数来获取document.getElementById并将该值发送到我的控制器。在我看来,我有以下代码: @foreach (var item in ViewBag.PersonsContacts as List<Software___FPPD.Models.Contact>) { <tr> <td>@Html.DisplayFor(model =>

我有一个发送到控制器1参数的Url操作链接,但我需要该参数调用javascript函数来获取document.getElementById并将该值发送到我的控制器。在我看来,我有以下代码:

@foreach (var item in ViewBag.PersonsContacts as List<Software___FPPD.Models.Contact>)
{
    <tr>
        <td>@Html.DisplayFor(model => item.ContactType.Name)</td>
        <td>@Html.EditorFor(model => item.ContactValue, new { htmlAttributes = new { @class = "form-control", id = "contactValue"} })</td>
        <td>
            <a href="@Url.Action("EditPersonContact", "Person", new { contactValue = getValue(item.ContactValue)})" class="btn  btn-success">Alterar</a>
        </td>
    </tr>
}

我做错了什么,因为我不能让它工作。

Url.Action
是一种方法,它通过razor在服务器上执行,javascript在客户端执行。因此,将两者结合起来并不容易

我不知道你想做什么。在您的问题中,您提到要将值设置为某个表单字段。但是,由于您将被重定向到新页面,因此没有意义!您设置的任何值都已消失(除非您在新选项卡中打开新页面)

无论如何,您可以做的是在javascript中侦听锚定标记的
单击
事件,并在客户端执行您想要的任何操作(例如:设置一些表单字段值/执行javascript函数等)

您的视图代码中存在一些问题,您正在为
@Html.EditorFor(model=>item.ContactValue
中循环中的每个项目创建相同的id值。重复的id无效。请避免这种情况

<td>
    @Html.EditorFor(model => item.ContactValue,
                     new { htmlAttributes = new { @class = "form-control myContactVal"} })
</td>
<td>
    <a href="@Url.Action("SignUp", "Home")"  data-contactvalue="@item.ContactValue" 
                                            class="btn  btn-success myEdit"> Alterar</a>
</td>

可能更容易使用for循环,而不是foreach,并使用索引引用项目。这样每个ID都将是唯一的。contactValue只能等于PersonsContacts[x].ContactValue。我需要为此使用javascript。我正在使用具有多模态的viewmodel。这部分代码用于更改联系人表中某个人的值。您好,我尝试执行以下操作。我有一个人可能有多个联系人。当我要编辑该人时,我在编辑视图中有一个所有联系人的列表联系人。在每个联系人前面,我都有一个按钮,当我们更改联系人值时,我们按下该按钮,ideia将向我的控制器发送联系人类型、联系人值和联系人Id,并更新我的联系人表。您可以在链接中将所有这些设置为html5数据属性,并在javascript中使用这些属性来构建URLIdeia很棒,但是当我更改它发送给函数类型contact的contactvalue时,旧的contact value和person Id。当我写入新的contact value时,是否可以不接收旧的contact value,而是发送该值。剩下的是greate。Perfect您将在哪里写入?在文本框中,如果是,您可以使用jQuery输入文本框值(与我们读取contactVal的方式相同)并将其附加到您的url。
<td>
    @Html.EditorFor(model => item.ContactValue,
                     new { htmlAttributes = new { @class = "form-control myContactVal"} })
</td>
<td>
    <a href="@Url.Action("SignUp", "Home")"  data-contactvalue="@item.ContactValue" 
                                            class="btn  btn-success myEdit"> Alterar</a>
</td>
$(function () {

    $("a.myEdit").click(function (e) {

        e.preventDefault();
        _this = $(this);
        var contactVal = _this.data("contactvalue");
        var url = _this.attr("href");
        url = url + "?contactValue=" + contactVal;
        alert(url);

        //You can do any other thing here.

        //If you want to update the field with  myContactVal class in prev td
        _this.closest("tr").find(".myContactVal").val(contactVal);


       // finally do the redirect 
        window.location.href=url;

    })

})