1

是否可以在同一个视图中访问文本框的值?例如,在我看来,我有以下文本框

@Html.TextBox("searchValue", ViewBag.CurrentFilter as string, new { placeholder = "Search" })

如果用户输入一个值,然后点击提交,页面将把搜索条件发送到控制器,根据条件查询数据库,然后在视图中显示结果。再次渲染视图时,文本停留在搜索框中并渲染标签

<input id="searchValue" name="searchValue" placeholder="Search" type="text" value="what i just typed in here" />

有没有办法让 ASP MVC 3 视图访问该value文本框?我想创建一个类似于

    @if (searchValue.hasValue())
    {
        do something in here
    }
4

2 回答 2

2

当页面首次加载时,视图会同步呈现。所有 Razor 表达式都会在页面呈现时进行评估,因此您得到的是静态 HTML。您不能使用它来跟踪表单值的后续更改 - 只能根据当前响应的初始值执行逻辑。

您需要使用 Javascript。假设您有一个与idof的链接myLink。默认设置为样式display:none;。然后,使用 jQuery,您可以执行以下操作:

<input id="searchValue" name="searchValue" ... />

<script type="text/javascript">
    $('#searchValue').change(function (){
         if($('#searchValue').val().length > 0) {
             $('#myLink').show();
         } else {
             $('#myLink').hide();
         }
    });
</script>

如果您需要更复杂的逻辑,您可以使用部分视图切换链接并使用 AJAX 调用对其进行更新。

于 2013-04-25T22:28:53.247 回答
1

也许我误解了,但看起来你正在填充搜索框,ViewBag.CurrentFilter然后“当视图再次呈现时,文本留在搜索框中”为“value =“我刚刚在此处输入的内容”

听起来你已经知道搜索文本是什么,那么为什么需要读取文本框的值呢?为什么不符合逻辑

@if (`ViewBag.CurrentFilter` hasSomeValue)
{
    do something in here
}

如果我错过了重点,请提前道歉。

于 2013-04-26T04:30:07.390 回答