Я новичок в JQuery и .Net, и у меня есть страница бритвы, в которой есть два раскрывающихся меню, где одно раскрывающееся меню зависит от выбранного элемента другого.Я пытаюсь создать модель проекта и сохранить его на сервере SQL.Это требует ProjectName, ProjectDescription, FileUploadPath, UserId и SubCategoryId.Я пытаюсь прочитать SubCategoryId элемента, который я выбрал в раскрывающемся меню Подкатегория, но не удается заполнить свойство, поэтому не удается создать модель.
Сообщение об ошибке: https://gyazo.com/af438a5ca73d161617eebd85d45a1c1f
Это функции JQuery, с которыми у меня возникают проблемы, это средняя:
@section scripts{
<script>
$(function () {
$("#CategoryId").on("change", function () {
var categoryId = $(this).val();
$("#SubCategoryId").empty();
$("#SubCategoryId").append("<option value=''>---Select Subcategory---</option>");
$.getJSON(`?handler=SubCategories&categoryId=${categoryId}`, (data) => {
$.each(data, function (i, item) {
$("#SubCategoryId").append(`<option value="${item.subCategoryId}">${item.subCategoryName}</option>`);
});
});
});
$("#SubCategoryId").on("change", function () {
var SubCategoryId = $(this).val();
});
$(document).ready(function () {
$('.custom-file-input').on("change", function () {
var filename = $(this).val().split("\\").pop();
$(this).next('.custom-file-label').html(filename);
});
});
});
</script>
Это код страницы бритвы:
[BindProperty(SupportsGet =true)]
public int CategoryId { get; set; }
public Category Category { get; set; }
[BindProperty]
public Project Project { get; set; }
public SelectList categorylist { get; set; }
[Required]
public string ProjectName { get; set; }
public string ProjectDescription { get; set; }
public IFormFile FileUpload { get; set; }
[BindProperty]
public int SubCategoryId { get; set; } //not populated
[BindProperty(SupportsGet = true)]
public int UserId { get; set; }
public CreatePortfolioModel(ICategoryService categoryService, IProjectService projectService, DatabaseContext context,
IHostingEnvironment hostingEnviornment)
{
this.categoryService = categoryService;
this.projectService = projectService;
this.hostingEnvironment = hostingEnviornment;
_context = context;
}
//Used to populate the category dropdownlist
public void OnGet()
{
UserId = Convert.ToInt32(HttpContext.Session.GetString("SessionUserId"));
categorylist = new SelectList(categoryService.GetCategories(), nameof(Category.CategoryId), nameof(Category.CategoryName));
}
//Used to populate the subcategory dropdownlist
public JsonResult OnGetSubCategories()
{
int SessionUserId = Convert.ToInt32(HttpContext.Session.GetString("SessionUserId"));
return new JsonResult(categoryService.GetSubCategories(CategoryId, SessionUserId));
}
public IActionResult OnPost(CreatePortfolioModel model)
{
if (ModelState.IsValid)
{
string uniqueFileName = null;
if(model.FileUpload != null)
{
string uploadsFolder = Path.Combine(hostingEnvironment.WebRootPath, "documents");
uniqueFileName = Guid.NewGuid().ToString() + "_" + model.FileUpload.FileName;
string filePath = Path.Combine(uploadsFolder, uniqueFileName);
model.FileUpload.CopyTo(new FileStream(filePath, FileMode.Create));
}
Project project = new Project
{
ProjectName = model.ProjectName,
ProjectDescription = model.ProjectDescription,
FileUploadPath = uniqueFileName,
SubCategoryId = model.SubCategoryId,
UserId = UserId
};
_context.Add(project);
_context.SaveChanges();
return RedirectToPage("/Index");
}
return Page();
Объект проекта:
public class Project
{
[Key]
public int ProjectId { get; set; }
[Required(ErrorMessage = "Enter Project Name")]
public string ProjectName { get; set; }
public string ProjectDescription { get; set; }
public string FileUploadPath { get; set; }
public int SubCategoryId { get; set; }
public int UserId { get; set; }
}
Я хочу, чтобы 2-я функция JQuery заполнила свойство SubCategoryId, чтобы я могла передать его для нового проекта в публикацию и сохранить проект на сервере sql.Любая помощь или руководство с благодарностью!