gpt4 book ai didi

c# - 当我将一个可为空的整数分配给 ViewBag 时,它会取消该值?

转载 作者:太空狗 更新时间:2023-10-29 23:31:18 27 4
gpt4 key购买 nike

考虑这个 ASP.NET MVC 5 Controller :

public class MyController : Controller {
public ActionResult Index(int? id) {
ViewBag.MyInt = id;
return View();
}
}

这个 View :

<p>MyInt.HasValue: @MyInt.HasValue</p>

当我调用 URL /my/ 时(使用空 ID),我得到以下异常:

An exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in System.Core.dll but was not handled in user code

Additional information: Cannot perform runtime binding on a null reference

相反,如果我传入一个 ID(例如 /my/1):

An exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in System.Core.dll but was not handled in user code

Additional information: 'int' does not contain a definition for 'HasValue'

这向我暗示 ViewBag.MyInt不是 Nullable<int> 类型, 但属于 intnull .

这是 ViewBag 做的吗?或者,像这样装箱 Nullable 类型是否更基本?或者,还有什么?

还有其他方法吗?

(我想我可以将支票更改为 ViewBag.MyInt == null ,但假设我出于某种原因真的需要一个 Nullable 类型)

最佳答案

我建议您创建一个 View 模型,它会给您充分的灵 active ,使“MyInt”成为可空类型。

当然,另一种方法是仅在“MyInt”不为空时设置它...

public class MyController : Controller {
public ActionResult Index(int? id) {
if (id.HasValue)
{
ViewBag.MyInt = id;
}
return View();
}
}

查看:

@if (ViewBag.MyInt != null)
{
<p>Has an Id</p>
}
else
{
<p>Has no Id.</p>
}

就个人而言,我会选择 View 模型,因为它是最佳实践,我很少使用 ViewBag,除非它用于非常简单的场景。

关于c# - 当我将一个可为空的整数分配给 ViewBag 时,它会取消该值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765330/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com