[英]How can I make my index action return a filtered list without adding a query string parameter?
我刚开始使用MVC.NET 5,我对要实现的目标有清晰的了解,但我对如何实现目标并不了解。
给定以下模型:
我希望能够转到/ Character或/ Character / Create并为控制器提供必要的信息,以自动处理我的请求的“世界”部分。 例如,如果我单击世界页面上的链接以转到/ Character,我想让控制器以某种方式知道我只想显示属于特定世界的字符。 而且,如果我单击链接转到/ Character / Create,我希望它知道我想创建一个属于特定世界的字符,而无需用户在表单上指定该字符。
我知道我可以通过/ Character?WorldId = xxxx之类的查询字符串传递世界ID,但是我计划使用一组复杂的关系模型,并且查询字符串很快就会变得非常难看。
在不像查询字符串那样向用户显示数据的情况下,传输此类数据的首选方法是什么?
在不像查询字符串那样向用户显示数据的情况下,传输此类数据的首选方法是什么?
好吧,老实说那是通过POST请求。 POST信息放入标头(与querystring相对)。
为此,您将更改:
<a href="/Character/?WorldID=1">Click Me</a>
至:
<form action="/Character" method="POST">
<input type="hidden" name="WorldID" value="1">
<input type="submit" value="Click Me">
</form>
我知道我可以通过/ Character?WorldId = xxxx之类的查询字符串传递世界ID,但是我计划使用一组复杂的关系模型,并且查询字符串很快就会变得非常难看。
我不会为了使查询字符串看起来更好而使您的生活变得更加复杂。 看看您今天浏览时看到的URL。 我们到处都有丑陋的查询字符串。
您的控制器应如下所示:我不知道您是否在使用实体框架,但我认为是
private EfDatabase db = new EfDatabase();
//Get Action to call list that you have stored in your database
[HttpGet]
public ActionResult Index(){
var model = db.WorldList.ToList();
return View(model);
}
[HttpGet]
public ActionResult Create(){
return View();
}
//World create action
[HttpPost]
public ActionResult Create(World world){
db.Entry(world).State = EntityState.Add;
db.SaveChanges();
return View();
}
您可以假设下一步是编辑和所需的更多控制器
注意:我还没有测试,我直接在这里编码
希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.