【问题标题】:How to set the selected field of combo box within the view如何在视图中设置组合框的选定字段
【发布时间】:2026-01-01 00:25:02
【问题描述】:

我在组合框中有两个选项。

<select id="selLang">
    <option value="/en" >english</option>
    <option value="/fr" >french</option>
</select>

当我选择第二个选项时,页面会刷新,并且所选选项不会显示在组合框的顶部(我的意思是,作为所选项目。) 我想将选定的选项设置为组合框顶部的选定选项 - 在视图中。 所以我的问题是我该怎么做?或者也许我必须创建一个 cookie?如果是这样 - 我该怎么做?

也许这是一个愚蠢的问题,但我是这个地区的新手。

提前致谢!

【问题讨论】:

  • 你是如何生成这个下拉列表的?你在使用一些助手吗?你在使用视图模型吗?当用户更改选择时,您将调用哪个控制器操作?你是如何调用它的?您打算如何/在何处将用户选择保留在服务器上,因为您知道 HTTP 是一种无状态协议。
  • 对不起,我错了,我在视图中 - 我正在生成它..
  • 这没有回答我之前评论中的任何问题。是的,您确实可以使用 cookie 来存储值。
  • 我使用了这个命令:var urlString = window.location.host; var Lang = $("#selLang")[0].value; window.location = "http://" + urlString + "/" + Lang;
  • 这会自动刷新页面并使页面在选择框中为“英语”时为法语。

标签: javascript asp.net-mvc-3


【解决方案1】:

您需要设置选项的selected 属性。你可以这样做:

<select id="selLang">
    <option value="en" >english</option>
    <option value="fr" selected="selected" >french</option>
</select>

希望这是你想要的..

this

【讨论】:

  • 但我需要更改它以防万一有人更改它而不是从一开始就更改,
【解决方案2】:

我建议您查看ASP.NET MVC localization guide,它将为您提供一些关于如何实现此功能的好主意。

【讨论】:

  • 这是一个非常棒的指南,我用它来替换语言。我强烈推荐这个网站!但他使用链接来更改语言而不是下拉列表...
【解决方案3】:

首先,为什么当您选择第二个选项时,页面会刷新。您是否有任何 JavaScript 函数可用于发布您的表单。

我这样问,因为 HTML &lt;select&gt; 标记的更改不会启动 HTTP Post 请求。所以,请更新解释。

但是,让我们回到您的问题。你可以试试这个:

<select id='selLang' name='selLang'>
    <option value="/en" >english</option>
    <option value="/fr" >french</option>
</select>

这将导致&lt;select&gt; 标记在POST 请求期间变为successful control。这意味着您可以使用它来创建如下脚本:

$(function(){
    $('#selLang').val('@HttpContext.Request["selLang"]');
});

【讨论】:

  • 实际上我有这个:var urlString = window.location.host; var Lang = $("#selLang")[0].value; window.location = "http://" + urlString + Lang;(这是自动刷新页面)和this:window.location.pathname - 正是该选项的值。(刷新页面后保持不变.) 这就是我想解决问题并避免使用 cookie 的方法。
最近更新 更多