从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 中的模型访问视图中文本框的值?

使用 MVC 从视图中的隐藏文本框中获取数据

显示从 ASP.NET MVC 中的命令行进程获取的数据

Asp.net 从 asp 中的文本框获取值到代码后面

如何通过 C# ASP.net 从 SQL Server 中的文本框中存储日期

如何根据 asp.net mvc4 中的模型列表填充 ListBox?