不使用 Dashless GUID DropDownListFor

Dashless GUID not used DropDownListFor

我有一个页面,它接受一个参数 x(它是一个 GUID)。 在我的页面上有一个

HTML.DropDownListFor(x => x.SomeGuidProperty).

如果我将 URL 中的参数 x 指定为 43f67d68-066d-4fda-94a8-3e3e4c7c278a(带破折号),下拉菜单会选择重新指定的选项。 但是,如果我将 URL 中的参数 x 指定为 43f67d68066d4fda94a83e3e4c7c278a(仍然是 GUID,但没有破折号)- DropDownList 会忽略它。

无法保证单一格式的GUID,因为页面被不同的来源使用。

如何使 DropDownList 理解参数 x?

不是直接绑定到 Guid,而是需要绑定到一个字符串,然后以编程方式转换为 Guid。例如,而不是像这样的东西:

public ActionResult Foo(Guid x)

您需要:

public Actionresult Foo(string x)

然后在内部,您需要将 x 格式化为 Guid 应该格式化,如果在将其转换为实际 Guid 之前尚未格式化: var guid = new Guid(x).