• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

在链接中使用Guid失败

c/c++ 来源:Kyle 3次浏览

我正在用剃刀引擎构建一个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()


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)