MVC:Controller的动作参数可以作为可空的Guid?

时间:2014-03-07 13:33:35

标签: c# asp.net-mvc guid nullable

在此功能中

    [HttpGet]
    public ActionResult Create_Summary(Guid? appointmentId)
    {
        if (appointmentId.HasValue)
        {
            var appointment = _appointmentRepository.GetAppointmentDetails(appointmentId);
            var summary = new CreateAppointmentSummary
            {
                NameOrSubject = appointment.Subject,
                Location = appointment.Location,
                DescriptionOrRemarks = appointment.Description
            };
            return View(summary);
        }
        else
        {
            var summary = new CreateAppointmentSummary();
            return View(summary);
        }

    }

我在调用存储库函数时遇到错误:Cannot convert System.Guid? to System.Guid

我想要做的是使得能够使用一些null guid值以及其他视图调用此操作。 但如果他们使用一些非空的guid值调用,那么调用resposiotry函数进行一些搜索。

但是我很难做到这一点。

2 个答案:

答案 0 :(得分:3)

Brandon说 - 当你调用存储库函数时需要这个。

var appointment = _appointmentRepository.GetAppointmentDetails(appointmentId.Value);

Guid?Guid是完全不同的类型; GetAppointmentDetails需要Guid

答案 1 :(得分:0)

请尝试:

(Guid?) new Guid(appointmentId)

刚刚施展它:( Guid?)(新Guid(myString))

还有一个隐式演员,所以这也可以正常工作:Guid? g =新Guid(myString);