C# 获取HtmlHelper.textbox值作为查询字符串mvc

C# 获取HtmlHelper.textbox值作为查询字符串mvc,c#,asp.net,asp.net-mvc,html-helper,C#,Asp.net,Asp.net Mvc,Html Helper,我有以下想法,我正在努力实现 @foreach (var item in Model) { <div>User: @item.Name<br /> Scores: @item.scores<br /> @Html.TextBox("lastvisit"); @Html.ActionLink("Update item", "updateMyItem", new { name =

我有以下想法,我正在努力实现

@foreach (var item in Model)
{
<div>User: @item.Name<br />
    Scores: @item.scores<br />
    @Html.TextBox("lastvisit");
    @Html.ActionLink("Update item", "updateMyItem", new  { name = item.Name, lastvisit=?????  })
    </div>
}
@foreach(模型中的变量项)
{
用户:@item.Name
分数:@item.Scores
@Html.TextBox(“上次访问”); @ActionLink(“更新项”,“更新项”,新的{name=item.name,lastvisit=??}) }
我见过这么多问题,但那不是我想要的

所以我的问题是。。 在上面的代码中,如何用文本框(lastvisit)的值替换(????) 并在操作链接的URL中以查询方式发送值

请注意,我选择不使用webform是出于我自己的原因,我知道如何使用webform.submit(),但我主要关心的是如何提取@HTMLhelper.textbox()的值


:)

像这样的事情可能会有帮助。为此,您需要呈现链接和文本框的唯一ID

这里有一个例子

简单模型的动作法

public ActionResult Index(int? id)
{
    List<MyModel> mod = new List<MyModel>() { 
        new MyModel { SelectedValue = 1 } ,
        new MyModel {SelectedValue = 2},
        new MyModel {SelectedValue = 3}
    };
        return View(mod);
}

好的,尼利斯,我会回答我自己的问题。。但是我会从你的解决方案中作弊,哈哈,因为它是鼓舞人心的。。先发制人

<script type="text/javascript">
    $(document).ready(function () {
        var myMainPath = "updateMyItem";

        $("a").each(function(){
          var name =$(this).parent("div").child("#itemName").val();
          var visit = $(this).parent("div").child("#lastvisit").val();
          $(this).attr('href', myMainPath +'?name=' + name + '&lastVisit='+ visit);


        });
    });

</script>

@foreach (var item in Model)
{
<div>User: <span id="itemName">@item.Name</span><br />
    Scores: @item.scores<br />
    @Html.TextBox("lastvisit", new { id="lastvisit"});
    <a  href=""> Update item </a>

    </div>
}

$(文档).ready(函数(){
var myMainPath=“updateMyItem”;
$(“a”)。每个(函数(){
var name=$(this.parent(“div”).child(“itemName”).val();
var visit=$(this.parent(“div”).child(“lastvisit”).val();
$(this.attr('href',myMainPath+'?name='+name+'&lastVisit='+visit));
});
});
@foreach(模型中的var项目)
{
用户:@item.Name
分数:@item.Scores
@TextBox(“lastvisit”,new{id=“lastvisit”}); }

你看,这可以通过javascript来完成,但我错误地认为你可以通过服务器上的Razor来操作它。

我知道这篇文章很老了,但多亏了asp.net/MVC/网站,我才开始学习MVC,我在教程中遇到了类似的问题。我的索引操作需要两个参数来定义对视图中显示的一组记录的排序和筛选(通过子字符串的maching)。我的问题是,我无法对过滤的子集进行排序,因为调用了视图,但在激活排序后,单击标题的链接,就不会传递任何过滤参数

@* Index.cshtml *@
    @using (Html.BeginForm())
    {
      <p>
      Find by name: @Html.TextBox("SearchString")
      <input type="submit" value="Search" />
      </p>
    }
    . . .
    <!-- header -->
    <table><tr><th>
      @Html.ActionLink("Last Name", "Index", new { sortOrder = ViewBag.NameSortParm })
    </th>

. . .

//controller.cs
    public ActionResult Index(string sortOrder, string searchString){...}
@*Index.cshtml*@
@使用(Html.BeginForm())
{

按名称查找:@Html.TextBox(“搜索字符串”)

} . . . @ActionLink(“姓氏”,“索引”,新的{sortOrder=ViewBag.NameSortParm}) . . . //控制器 公共操作结果索引(字符串排序器、字符串搜索字符串){…}
我想我需要访问文本框,但显然我只需要使用提供的ViewBag对象,正如在本例中已经看到的那样

@* Index.cshtml *@
    @using (Html.BeginForm())
    {
      <p>
      Find by name: @Html.TextBox("SearchString")
      <input type="submit" value="Search" />
      </p>
    }
    . . .
    <!-- header -->
    <table><tr><th>
      @Html.ActionLink("Last Name", "Index", new { sortOrder = ViewBag.NameSortParm, searchString = ViewBag.SearchString })
    </th>

. . .

//controller.cs
    public ActionResult Index(string sortOrder, string searchString)
    {
      ViewBag.SearchString = searchString;
      . . .  
    }
@*Index.cshtml*@
@使用(Html.BeginForm())
{

按名称查找:@Html.TextBox(“搜索字符串”)

} . . . @ActionLink(“姓氏”,“索引”,新的{sortOrder=ViewBag.NameSortParm,searchString=ViewBag.searchString}) . . . //控制器 公共操作结果索引(字符串排序器、字符串搜索字符串) { ViewBag.SearchString=SearchString; . . . }

我不知道,也许类似的行为也可以用来解决引起这篇文章的问题。

好吧,问了之后,我想我觉得这几乎是不可能的。。bec,actionlink的创建时间将在服务器上,用户还没有在文本框中写入任何内容。。。一旦页面被发送给用户,除了使用javascript,就没有办法操作actionLink:(您可以随时利用jquery
$(文档).ready
。您可以在文本框中选择值并将其附加到操作链接中。您可以用代码回答它吗?因为我认为这是不可能的。您展示了JavaScript是最终解决方案,但是您提供的解决方案没有解决我上面的问题,我将投票支持您的努力:)您想要什么?我以为您想将值从文本框传递到操作链接!也许我不明白这个问题:(阅读我上面的问题,告诉我如何使用操作链接提交查询字符串中文本框的值通过Razor操作是不可能的,因为单击链接时,你不知道文本框中的值。很好,你回答了自己的问题,你也可以将其标记为答案,这样可以帮助其他人。):)这是我在对我的问题的第一次评论中的观点:我说我意识到这个问题不可能通过服务器上的Razor来解决,我唯一的工具是客户端Javascript:)但是你帮我分配了答案(虽然还没有测试)…注意:)
@* Index.cshtml *@
    @using (Html.BeginForm())
    {
      <p>
      Find by name: @Html.TextBox("SearchString")
      <input type="submit" value="Search" />
      </p>
    }
    . . .
    <!-- header -->
    <table><tr><th>
      @Html.ActionLink("Last Name", "Index", new { sortOrder = ViewBag.NameSortParm })
    </th>

. . .

//controller.cs
    public ActionResult Index(string sortOrder, string searchString){...}
@* Index.cshtml *@
    @using (Html.BeginForm())
    {
      <p>
      Find by name: @Html.TextBox("SearchString")
      <input type="submit" value="Search" />
      </p>
    }
    . . .
    <!-- header -->
    <table><tr><th>
      @Html.ActionLink("Last Name", "Index", new { sortOrder = ViewBag.NameSortParm, searchString = ViewBag.SearchString })
    </th>

. . .

//controller.cs
    public ActionResult Index(string sortOrder, string searchString)
    {
      ViewBag.SearchString = searchString;
      . . .  
    }