提问人:Govind Ramesh 提问时间:8/23/2022 最后编辑:Yiyi YouGovind Ramesh 更新时间:8/24/2022 访问量:271
即使条件为 true,也不会显示 CSHTML 页面中@if条件内的元素
elements inside @if condition in CSHTML page is not displayed even when the condition is true
问:
这是我的CSHTML页面。
<div>
<table cellpadding="8">
<tr>
<th>File Path</th>
<td>@Html.TextBoxFor(Model => Model.returnFilename, new { id = "filepath" })</td>
</tr>
</table>
@if (Model != null)
{
<table cellpadding="8">
<tr>
<th>File Names</th>
<td>
@Html.DropDownListFor(Model => Model.getFileNamesList, new SelectList(Model.getFileNamesList, "getFilepath", "getFileNames"), " -- Select File --", htmlAttributes: new { style = "width: 200px;" })
</td>
</tr>
</table>
}
</div>
<script type="text/javascript">
$(function () {
console.log("in script");
$("[id$=filepath]").on('change', function () {
$.ajax(
{
type: 'POST',
dataType: 'JSON',
url: '/Home/LoadFiles',
data: { filePath: $(this).val() }
})
})
})
</script>
当在文本框中输入内容并返回时,将进行 JavaScript 调用。这将调用控制器方法并获取下拉列表的详细信息。
控制器方法。
public ActionResult LoadFiles(string filePath, FeatureDisplayListModel getFileName)
{
ModelState.Clear();
string errorMessage = "";
GetFilesModel objFileNames = new GetFilesModel();
try
{
string[] fileEntries = Directory.GetFileSystemEntries(filePath);
foreach (string fileName in fileEntries)
{
if (getFileName.getFileNamesList == null)
{
getFileName.getFileNamesList = new List<GetFilesModel>();
}
string trimFileName = Path.GetFileName(fileName);
objFileNames.getFileNames = trimFileName;
objFileNames.getFilepath = fileName;
getFileName.getFileNamesList.Add(objFileNames);
}
getFileName.isFileName = true;
}
catch (Exception ex)
{
errorMessage = "NO TAG FOUND";
//featAndChannel.returnFilename = featureID + " - " + childFeatureID + " " + errorMessage;
return View("Index", getFileName);
}
return View("ConfigChecker", getFileName);
}
当详细信息被提取并返回到视图时。封装下拉列表的@if条件不起作用。尽管它进入了@if块,但它没有显示其中的下拉列表。
答:
0赞
Yiyi You
8/24/2022
#1
如果你想从使用ajax的动作中获取数据,你可以尝试将类型数据返回到ajax,然后将html添加到带有数据的下拉列表中:List<GetFilesModel>
行动:
public List<GetFilesModel> LoadFiles(string filePath, FeatureDisplayListModel getFileName)
{
ModelState.Clear();
string errorMessage = "";
GetFilesModel objFileNames = new GetFilesModel();
try
{
string[] fileEntries = Directory.GetFileSystemEntries(filePath);
foreach (string fileName in fileEntries)
{
if (getFileName.getFileNamesList == null)
{
getFileName.getFileNamesList = new List<GetFilesModel>();
}
string trimFileName = Path.GetFileName(fileName);
objFileNames.getFileNames = trimFileName;
objFileNames.getFilepath = fileName;
getFileName.getFileNamesList.Add(objFileNames);
}
getFileName.isFileName = true;
}
catch (Exception ex)
{
errorMessage = "NO TAG FOUND";
//featAndChannel.returnFilename = featureID + " - " + childFeatureID + " " + errorMessage;
return getFileName.getFileNamesList ;
}
return getFileName.getFileNamesList ;
}
阿贾克斯:
$(function () {
console.log("in script");
$("[id$=filepath]").on('change', function () {
$.ajax(
{
type: 'POST',
dataType: 'JSON',
url: '/Home/LoadFiles',
data: { filePath: $(this).val() },
success: function (data) {
var items = '';
$("#getFileNamesList").empty();
$.each(data, function (i, FileNamesList) {
items += "<option value='" + FileNamesList.getFilepath + "' selected>" + FileNamesList.getFileNames + "</option>";
});
$('#getFileNamesList').html(items);
},
})
})
评论
FeatureDisplayListModel