【发布时间】:2020-10-22 06:30:28
【问题描述】:
我正在尝试通过单击按钮将用户导航到新页面。我在渲染新视图时遇到问题。每当我单击该按钮时,我要么在我的页面上收到一个下拉错误,要么我得到主页视图,但在 URL 中有我想要的路由。我想指出,用户将从主页导航到此页面,这是我在应用程序上制作的新登录页面。我想指出,以防我在这里所做的事情可以被修改。 How I created a new landing page
我想从我的登录页面导航到我的图书目录页面。
我的视图(在着陆页上):
<form method="post" asp-controller="Home" asp-action="Home" role="post">
<div class="form-group">
<label asp-for="bookName"></label>
<select name="bookName" asp-items="@(new SelectList(ViewBag.message, "ID", "bookName"))">
</select>
</div>
<div class="form-group">
<input type="submit" value="Submit" class="btn btn-primary" />
</div>
</form>
<div class="row">
<div class="form-group">
<a asp-controller="BookInventory" asp-action="Index">
<input type="button" value="Book Inventory Page" />
</a>
</div>
</div>
我的控制器(在我的登录页面上)
public void GetBooksDDL()
{
List<BookModel> bookName = new List<BookModel>();
bookName = (from b in _context.BookModel select b).ToList();
bookName.Insert(0, new BookModel { ID = 0, bookName = "" });
ViewBag.message = bookName;
}
[HttpGet("[action]")]
[Route("/Home")]
public IActionResult Home()
{
GetBooksDDL()
return View();
}
我的控制器(在我的图书目录页面上):
[HttpGet("[action]")]
[Route("/Index")]
public IActionResult Index()
{
return View();
}
我想指出,我的图书库存控制器上的断点确实命中了“return View()”,但它仍会从主页呈现项目。
图书下拉菜单显示的错误是:
ArgumentNullException:值不能为空。 (参数“项目”) Microsoft.AspNetCore.Mvc.Rendering.MultiSelectList.ctor(IEnumerable items, string dataValueField, string dataTextField, IEnumerable selectedValues, string dataGroupField)。
我想知道为什么我在尝试导航到其他页面时会收到此错误。由于这是新的登陆页面,它是否有可能将其所有数据传递到其余页面?
【问题讨论】:
-
关于控制器上 Index() 和 Home() 操作上方的属性。我不明白他们为什么会有
[Produces("application/json")]它应该返回视图,而不是 JSON。也许应用程序 JSON 应该继续 GetBookDDL 方法。 -
@T3.0 您好,感谢您的回复!这是一个很好的收获,我将从我的代码中删除它,因为它不是必需的。我仍然遇到同样的问题。
标签: asp.net-core model-view-controller razor dropdown argumentnullexception