我正在使用asp.net core 2.1,我想使用selected option
元素并在其中手动设置值,如以下代码所示:
<select>
<option selected="@(typeCar== "Volvo" ? "selected" : string.Empty)" value="volvo">Volvo</option>
<option selected="@(typeCar== "Saab" ? "selected" : string.Empty)" value="saab">Saab</option>
<option value="vw">VW</option>
<option value="audi">Audi</option>
</select>
但是当我想在它们两个中都使用三元运算符时,selected="selected"
等于selected=""
,因此选择了这两个选项,显然selected="selected"
和{{1 }},例如当selected=""
在浏览器中查看页面源时如下所示:
typeCar=Volvo
并选择第二个选项! 我该如何解决这个问题?
答案 0 :(得分:2)
从您的三元组返回null,而不是int traverse(char* directory)
{
struct dirent *currentDir;
DIR *traverser = opendir(directory);
if (traverser == NULL)
{
printf("Error: Could not open directory.\n");
return 0;
}
while ((currentDir = readdir(traverser)) != NULL)
{
if (currentDir->d_type == DT_DIR && strcmp(currentDir->d_name, ".") != 0 && strcmp(currentDir->d_name, "..") != 0)
{
int PID = fork();
forkCount++;
char pathBuffer[1024];
if (PID == 0)
{
snprintf(pathBuffer, sizeof(pathBuffer), "%s/%s", directory, currentDir->d_name);
traverse(pathBuffer);
}
else
{
listOfPIDS[forkCount] = PID;
int status = 0;
wait(&status);
}
}
else if (strcmp(currentDir->d_name, ".") != 0 && strcmp(currentDir->d_name, "..") != 0)
{
printf("%s\n", currentDir->d_name);
}
}
closedir(traverser);
return 0;
}
。如果该属性的值为null,Razor会自动将其删除,但是由于您将其设置为 something ,即使它只是一个空字符串,它也将持续存在。
string.Empty
答案 1 :(得分:0)
正如Shyju所说,您不能像当前示例那样使用三元运算符表达式来创建selected
属性。像下面的示例一样使用JS / jQuery表达式:
$('select').append('<option value="' + typeCar + '"' + (typeCar == 'somevalue') ? ' selected="selected"' : '') + '>' + typeCar + '</option>';
或者直接使用<select>
标签帮助程序:
<select asp-for="TypeCar" asp-items="Model.Cars"></select>
从包含SelectListItem
的列表中填充:
public List<SelectListItem> Cars { get; set; } = CarsList.Select(x => new SelectListItem { Text = x.CarName, Value = x.CarId, Selected = x.IsSelected }).ToList();