Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Razor 如何设置选定元素的选定属性的值_Razor_Webmatrix - Fatal编程技术网

Razor 如何设置选定元素的选定属性的值

Razor 如何设置选定元素的选定属性的值,razor,webmatrix,Razor,Webmatrix,我正在使用webmatrix、razor语法和cshtml文件 我有一个数据库记录的编辑页面,其中包含select boxid=selStatus。我试图根据正在编辑的当前记录的值动态设置选择框的选定值 我有本地var中的当前值或其索引,但我似乎无法将此值分配回select if (currentStatus=="Completed"){ selStatus.options[1].selected=true; } RES=错误:名称“selStatus”在当前上下文中不存在 我在这里遗

我正在使用webmatrix、razor语法和cshtml文件

我有一个数据库记录的编辑页面,其中包含select boxid=selStatus。我试图根据正在编辑的当前记录的值动态设置选择框的选定值

我有本地var中的当前值或其索引,但我似乎无法将此值分配回select

if (currentStatus=="Completed"){
    selStatus.options[1].selected=true;
}
RES=错误:名称“selStatus”在当前上下文中不存在


我在这里遗漏了一些明显的东西,但似乎无法理解。任何想法都值得赞赏。谢谢

除了使用Javascript,您还可以在创建下拉列表时设置所选项目

当您有一个动态生成的下拉列表时,这将起作用。如果下拉列表是静态的,则需要使用javascript

首先创建将填充下拉列表的数据:

var selectQ = "SELECT StatusName, StatusID FROM MyStatusTable";
List<SelectListItem> statusdropdownlistdata = new List<SelectListItem>();
bool isSelected = false;
foreach(var item in db.Query(selectQ)){
    isSelected = false;
    if(item.StatusName == "Completed"){
        isSelected = true;
    }
    statusdropdownlistdata.Add(new SelectList Item
    {
        Text = item.StatusName,
        Value = item.StatusID.ToString(), 
        Selected = isSelected
    });
}
以上内容将显示ID=StatusTypes的下拉列表,并显示所选项目的下拉数据

查找Html.DropdownList,您可能会找到其他选项和方法来实现这一点

我不确定这段代码是否有效,因为我是用内存编写的 在布局站点中:

@{
    if (!IsPost)
    {
        PageData["accountType"] = 0; /* default value */
    }
}
<html>
    <head></head>
    <body>
        <form action="@Href("~/")" method="post">
            <select name="accountType">
                <option value="0"@(PageData["accountType"] == 0 ? " selected" : "")>Standard</option>
                <option value="1"@(PageData["accountType"] == 1 ? " selected" : "")>Golden</option>
                <option value="2"@(PageData["accountType"] == 2 ? " selected" : "")>Ultimate</option>
            </select>
        </form>
    </body>
<html>
稍后,根据您的需要使用

PageData["accountType"] = (required int value);

如果您有一个静态选项列表,例如婚姻状况,您可以让我们中的一些人更清楚地看到它,如下所示:

<select>
  <option value="Single"   @(marStat == "Single"   ? "selected" : "")>Single</option>
  <option value="Married"  @(marStat == "Married"  ? "selected" : "")>Married</option>
  <option value="Divorced" @(marStat == "Divorced" ? "selected" : "")>Divorced</option>
  <option value="Widowed"  @(marStat == "Widowed"  ? "selected" : "")>Widowed</option>
</select>
这样做的目的是,如果包含从数据库检索到的值的razor变量marStat与条件中的字符串匹配,它会将selected呈现到HTML中。
它有点粗野,但我相信它非常可读。

觉得添加这个也很好——这就是我如何做到的。您还可以使用控制器将值从传递到ViewBag,然后获取该值并在视图中进行比较。见下文: 在视图中,我将值传递给ViewBag-

ViewBag.degreeLevel=userInfo.educationlevel;用户信息只是我的对象

然后,我在视图中进行比较,如下所示:

“System.Web.Mvc.HtmlHelper”没有名为“DropDownList”的适用方法,但似乎有一个同名的扩展方法。无法动态调度扩展方法。考虑在不使用扩展方法语法的情况下铸造动态参数或调用扩展方法。我的代码与此非常类似,但是我得到的标签助手“选项”在元素的属性声明区域中不一定有C。我猜这是过时的Razor语法。我和@GrantBirchmeier有同样的问题,所以为了完整起见,我使用`
PageData["accountType"] = (required int value);
<select>
  <option value="Single"   @(marStat == "Single"   ? "selected" : "")>Single</option>
  <option value="Married"  @(marStat == "Married"  ? "selected" : "")>Married</option>
  <option value="Divorced" @(marStat == "Divorced" ? "selected" : "")>Divorced</option>
  <option value="Widowed"  @(marStat == "Widowed"  ? "selected" : "")>Widowed</option>
</select>