从asp.net mvc的部分视图中的文本框中获取值
Posted
技术标签:
【中文标题】从asp.net mvc的部分视图中的文本框中获取值【英文标题】:Getting Value from textbox inside partial View in asp.net mvc 【发布时间】:2014-01-03 15:16:59 【问题描述】:我想在锚链接标签内的局部视图中获取文本框的值,以便每次单击链接时我都可以将值从锚链接标签传递给控制器。我该如何执行此操作。请给点建议..谢谢...
ViewUser.cshtml
@model IEnumerable<Search_Paging.Models.tbl_product>
<html>
<head>
<script src="@Url.Content("~/Scripts/jquery-1.5.1.js")" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function ()
$('.linkAction').click(function (e)
$('.linkAction').attr('href', '@Url.Action("UsersList", "Home", new str = "---" )'.replace("---", $('.txtString').val()));
);
e.preventDefault();
);
</script>
</head>
<body>
@Html.TextBox("Strings", null, new @class = "txtString" )
<input type="button" value="filter" id="Button1" />
<div class="pagination">
@for (int p = 1; p <= ViewBag.Total; p++)
<a href="@Url.Action("UsersList", "Home", new str = "---" )" class="linkAction">@p</a>
</div>
</body>
</html>
getUsersList.cshtml(部分视图)
<h2>@ViewBag.strings</h2>
HomeController.cs
[HttpGet]
public ActionResult ViewUser()
ViewBag.Total = 15;
return View();
[HttpGet]
public ActionResult UsersList(string str)
ViewBag.strings = str;
return PartialView("UsersList");
【问题讨论】:
在这里查看我的答案***.com/questions/20662629/… 如果我的锚链接在局部视图中,而文本框在主视图中,这会起作用吗... 只要在脚本运行时加载了局部视图,它应该可以正常工作 我已经编辑了我的代码。它在控制器内部传递空值。请看看我哪里错了。 由于您在链接点击上设置源,如果我不得不猜测,链接被触发,然后源被更改。尝试将链接上的 href 更改为“”,看看我的猜测是否正确。 【参考方案1】:如果你只是想重定向你也可以只做一个 window.location 而不是设置链接的来源。将源的 href 更改为“#”并为您的点击事件
$('.linkAction').click(function ()
alert("link clicked");
window.location = '@Url.Action("getUsersList", "Home", new page = "----" )'.replace("----", $('.txtString').val());
);
编辑:
我相信您需要将 p 放在引号中,否则它会认为它是一个变量。如果您希望 p 通过,那应该可以正常工作。查看您的代码,尽管您似乎希望将特定于该链接的 p 与它一起传递。为此,我建议将 p 作为链接上的 id。然后在你的脚本中你应该能够做类似的事情
$(this).id;
要获取 p 的值,您需要将其放入替换中,以便将其包含在链接中。如果您有任何问题,请告诉我。我还建议您不要使用 p 作为要替换的值。如果链接中有任何 p,它们将被替换为值。所以使用一些独特的东西。
【讨论】:
从 $('.linkAction').attr('src') 更改为 .attr('href') 后工作正常。但是我想再问一点,如果我想传递两个参数以便一个保持不变并通过 javascript 只更改一个参数,如何实现。感谢您的回答。 您可以在 url.action 中添加任意数量的参数。只需用逗号分隔它们。如果第二个不会改变,您可能不需要替换,只需将其放入列表中 我传递了另一个参数 @p page=p 但 p 在 javascript 中无法访问。【参考方案2】:如果您使用链接来调用操作,它将导致 HttpGet
ViewUser 用 HttpPost 修饰。您需要删除该属性。
【讨论】:
以上是关于从asp.net mvc的部分视图中的文本框中获取值的主要内容,如果未能解决你的问题,请参考以下文章
asp.net mvc c# - 是不是可以从 CodeBehind 中的模型访问视图中文本框的值?