【问题标题】:Webmatrix - Update input value from querystringWebmatrix - 从查询字符串更新输入值
【发布时间】:2013-12-02 13:22:22
【问题描述】:

我有一个超级快速的问题要问你,我想你可以快速回答。 我正在构建的网站上有一个搜索页面,它使用查询字符串参数来更改搜索结果。

我还希望任何查询字符串参数都能反映嵌入在同一页面上的搜索表单。它非常适合输入框。例如:

修改后的代码:

var proptype = db.Query("SELECT * FROM Property_Type");

string propertyType = "";

propertyType = Request.QueryString["propertyType"];
    <select name="propertytype">
      <option value="">Any</option>
      @foreach(var type in proptype){    
      <option value="@type.PropertyTypeID" selected="@(propertyType == type.PropertyTypeID)">@type.PropertyType</option>
      }
    </select>

谢谢,加文

【问题讨论】:

    标签: forms razor webmatrix


    【解决方案1】:

    要将&lt;select&gt; 中的&lt;option&gt; 的值标记为选中,请使用selected 属性。在最简单的层面上,您可以这样做:

    <select name="propertytype">
     <option value="">Any</option>
     <option value="villa" selected="@(propertyType == "villa")">Villa</option>
     <option value="apartment" selected="@(propertyType == "apartment")">Apartment</option>
    </select>
    

    这将评估每个测试的真假(只有一个应该为真),并且 Razor 引擎将在适当的元素上写出 selected="selected"

    您应该考虑您的属性类型是否应该存储在数据库中。您可能应该有一个属性类型表,并且每个属性都将使用一个外键链接到适当的一个(或多个)。这也会改变你写下拉列表的整个方式,实际上会稍微简化它。您的代码将类似于(显然在某种程度上取决于您的数据库架构和字段名称等):

    <select name="propertytype">
     <option value="">Any</option>
     @foreach(var type in propertyTypesQuery)
     {
         <option value="@type.Id" selected="@(propertyType == type.Id)">@type.Name</option>
     }
    </select>
    

    从表单元素中获取值的部分可以很简单:

    int propertyType = Request.Form["propertytype"].AsInt();
    

    如果未选择任何内容,这会将其设置为零,您可以将其用于搜索系统中的“任何”逻辑。

    您还可以使用Html.DropDownList() 帮助程序来获得可以说是更简洁的版本。有关示例代码,请参阅 Mike Brind 的文章:http://www.mikesdotnetting.com/Article/196/WebMatrix-jQuery-Cascading-Dropdown-Lists

    您在代码中也使用了错误的变量名,您似乎重用了numBedrooms,但我怀疑这是复制/粘贴错误。明确一点:numBedrooms = Request.QueryString["propertyType"]; 应该是 propertyType = Request.QueryString["propertyType"];

    【讨论】:

    • 我认为你是对的,我需要将我的属性类型添加到我数据库中的第二个表中。如果我需要添加其他属性类型,这也将变得更加容易。改变需要一些努力,但我认为这是值得的。完成后,我仍然需要使用“选定”属性对吗?只引用 propertyType ID 而不是字符串?
    • 我会为您对数据库版本所做的事情进行编辑 - 是的,我建议您现在花时间做这项工作是值得的 - 它将在未来带来红利.
    • 嘿,我已经按照你的建议做了,但我收到错误“运算符'=='不能应用于'string'和'short'类型的操作数”。我将在上面发布我编辑的代码
    猜你喜欢
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多