gpt4 book ai didi

c# - asp.net mvc 中的动态类型转换编辑操作 : how can I handle multiple datatypes without throwing an exception?

转载 作者:太空宇宙 更新时间:2023-11-03 16:56:08 27 4
gpt4 key购买 nike

我正在为我设计的、以 ActiveRecord 为模型的数据对象制作一个通用的 MVC 查看器/编辑器。

数据对象是完全通用的,它们可以有字符串、整数、int16 等主键,无论数据库使用什么(这个组织的持久层使用各种数据类型作为主键,我想要这个 MVC“浏览器/编辑器”来处理所有这些问题)。

在索引 View 中创建编辑链接很简单:

Response.Write("<td>" + Html.ActionLink("Edit", "Edit", new { id = pkValue }) + "</td>");

问题在另一边,在编辑操作中:

public ActionResult Edit(object id)

当我尝试将 id 用作通过反射调用的静态“select”方法的参数数组的唯一元素以检索水化数据对象以从数据库中编辑时,除了字符串之外的任何其他内容都会引发异常:

object[] parameters = { id };
list = (List<T>)select.Invoke(null, parameters);

我知道参数的 CLR 类型,而且我知道 object id 的“真实”类型。我应该使用某种粗糙的 case 语句来手动进行类型转换,还是我可以使用一些技巧来使用参数的类型进行类型转换?

我可以/应该重载 ActionResult Edit() 以获取 intint16 int32 等?

在这里我应该怎么做才能确保无论 id 是什么“真实”类型,我都可以将它传递到数据库中而不会抛出异常?

这是我到目前为止尝试过的:

我让我的通用 Controller 采用两种类型参数,一种用于数据对象,另一种用于主键数据类型:

public class CoreDataController<t,T> : Controller  where T:IDataObjectBase<T>

然后我尝试了这个 Action :

id = (t)id;
object[] parameters = { id};

啧啧啧! “指定的转换无效”。 id"2"tint?

最佳答案

您能否提供更多有关选择方法的代码详细信息以及您正在对拉取数据执行的存储过程或查询。

我目前建议通过以下方式将 id 参数的值传递给 select。

if(id != null)
Select(id.ToString());

关于c# - asp.net mvc 中的动态类型转换编辑操作 : how can I handle multiple datatypes without throwing an exception?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1969945/

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