在链接中使用Guid失败
我正在用剃刀引擎构建一个MVC4项目,但我不知道它是否与我的问题有关。 我有一个VendorBillController提交(字符串poId)ActionResult。 我的链接看起来是这样的: example.com/VendorBill/Submit?poId=790a2e76-5186-42c1-8087-c13b18d22023在链接中使用Guid失败
但是,试图访问这个页面的时候,我得到这个错误:
The view '722884' or its master was not found or no view engine supports the searched locations.
为什么它寻找视图722884?虽然我非常确定html链接中的数字,字母和破折号都可以,但我仍然尝试使用html编码链接,但没有任何更改。
如果我把在
example.com/VendorBill/Submit?poId=asdf
这使得它的功能,但后来因为POID被传递到新的GUID()失败,ASDF是不是一个GUID。
为什么URL中的guid失败?是否有一个'正常'的工作,当一个GUID是需要通过的ID?
编辑:
这里是我的整个控制器代码:
它不与GUID工作,要么,这是我整个控制器,但我不认为它甚至到达那里,所以我“M不知道它的问题:
public class VendorBillsController : Controller {
public ActionResult Submit(Guid poId)
{
var purchaseOrderId = new Models.Entities().TempLinks.AsQueryable().Single(x => x.Guid == poId).PurchaseOrderId;
return View(purchaseOrderId.ToString());
}
}
}
回答:
请问,如果你改变的Submit
的签名Submit(Guid poId)
工作?
在MVC中使用GUID本身没有问题,它会为你转换它们。
如果上述不起作用,您能否请包含控制器方法的代码,以便我们可以查看它?
更新:不,你的问题是这样的:
return View(purchaseOrderId.ToString());
如果你传递一个字符串到视图,它假设你正在传递的是视图(see this on MSDN)的名称,如果你希望你的视图模型的类型为string
,那么你将不得不通过视图名称作为第一个参数,然后是主视图名称,然后是字符串值(this overload)。更容易声明显式视图模型其中有一个属性PurchaseOrderId
然后将其传递给view方法。View
方法重载是设置你可以使用任何视图模型类型,除了字符串。
你可以只通过它,如果它是一个GUID,但你必须在把它作为一个GUID,不叫ToString()
回答:
问题是当你想通过只将一个字符串中强类型视图。当您传递字符串时,MVC期望的是您想要加载的视图的名称。这就是它寻找的原因,并且无法根据您传入的Guid字符串找到视图。
MSDN:Controller.View(string viewName)
Gleen斯拉文是正确的,如果你从一个字符串类型更改为GUID,那么你将不会有这个问题。
以上是 在链接中使用Guid失败 的全部内容, 来源链接: utcz.com/qa/261651.html