繁体   English   中英

如何使我的索引操作返回过滤列表而不添加查询字符串参数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM