在链接中使用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

回到顶部