动作调用Javascript函数
我有一个发送到控制器1参数的Url操作链接,但我需要该参数调用javascript函数来获取document.getElementById并将该值发送到我的控制器。在我看来,我有以下代码:动作调用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 =>
@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;
})
})