我有一个MVC5应用程序,我正在研究基本的CRUD功能。我可以创建并且所有写入整齐到Db。但是当我想要“编辑”或“删除”时,它似乎搞得一团糟,因为它会在URL中添加许多%20。但是如果我手动将它们调整到id,它就可以工作。然后我可以调用该方法并显示相应的视图。我在这里缺少什么? 我必须修剪输入,或在Web.Config文件中添加一些东西......?
链接如下所示:
Delete/1%20%20%20%20%20%20%20%20%20
控制器方法:
public ActionResult Delete(string id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Test test = db.Tests.Find(id);
if (test == null)
{
return HttpNotFound();
}
return View(test);
}
// POST: /Test/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(string id)
{
Test test = db.Tests.Find(id);
db.Tests.Remove(test);
db.SaveChanges();
return RedirectToAction("Index");
}
答案 0 :(得分:1)
%20是空格字符的HTTP安全编码,因此这里的实际ID是十个字符 - “1”字符后跟九个空格,然后进行编码。
这些空间来自哪里?我的猜测是,在您的数据库中,您已将ID字段声明为长度为10的固定长度字段(即CHAR(10)而不是VARCHAR(10))。您可以将数据库更改为使用可变长度字符串字段,或者如您所说,在写出链接时可以在ID上调用Trim()。