Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 在MVC 3应用程序的编辑视图中删除自动生成的字段,然后填充相应的属性_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 在MVC 3应用程序的编辑视图中删除自动生成的字段,然后填充相应的属性

Asp.net mvc 3 在MVC 3应用程序的编辑视图中删除自动生成的字段,然后填充相应的属性,asp.net-mvc-3,Asp.net Mvc 3,我的MVC 3应用程序中有一个名为Camera的对象。我创建了一个控制器动作和一个视图来编辑摄影机对象。我遇到了一些问题,如果有人能帮助我,我将不胜感激。以下是编辑操作方法: public ActionResult CameraEdit(int cid) { ... } [HttpPost] public ActionResult CameraEdit(Camera camera, HttpPostedFile file) { ... } 1-Camera类有一些我不想在编辑视图上显示的属性

我的MVC 3应用程序中有一个名为Camera的对象。我创建了一个控制器动作和一个视图来编辑摄影机对象。我遇到了一些问题,如果有人能帮助我,我将不胜感激。以下是编辑操作方法:

public ActionResult CameraEdit(int cid)
{
...
}

[HttpPost]
public ActionResult CameraEdit(Camera camera, HttpPostedFile file)
{
...
}
1-Camera类有一些我不想在编辑视图上显示的属性(例如createdDate)。因此,我从布局中删除了自动生成的标记。问题是,当我使用TryUpdateModel更新HttpPost版本的编辑操作方法中的Camera对象(该方法将Camera对象作为第一个参数)时,我提取的那些属性将不会填充,并将设置为null。我如何解决这个问题?我知道MVC框架通过基于name属性搜索表单字段来尽最大努力填充属性,因此当它没有找到任何名为“createdDate”的文本框时,它无法填充此属性。但是我该如何隐藏这个不需要的字段呢?这里有些矛盾


2-My Camera类具有存储图像路径的图像属性。在编辑表单上,我想上传一个文件,就像上面的例子一样,我删除了布局中自动生成的标记,而是输入一个html文件。如果在运行时上载文件,我如何将摄影机对象的图像属性(编辑方法的第一个属性)设置为用户输入的新路径?

使用视图模型。因此,与其让编辑操作通过并获取
摄影机
对象,不如让它们通过并获取
编辑摄影机模型
对象。这是一个您将定义的类,它只包含编辑相机和此特定视图所需的内容。甚至上传的文件也可能是视图模型的属性,因此您不需要控制器后的操作获取2个参数。显然,现在视图将被强类型化为视图模型,而不是域模型

然后在控制器内部,在域模型和视图模型之间映射操作。就我个人而言,我用它来简化这个映射


通过这种方式,您可以将所有自动生成的EF和特定内容保留在DAL层中,而不必在前端处理。

ViewModel方法有效,只是文件上载有一个问题。在VIEW模型类中,我应该考虑什么样的属性,以便正确地从文件输入“@ HamidRashidi”中获取文件路径,例如:<代码>公共HtpPoStdFrimeBasefile {GET;set;}。请注意,我使用的是
HttpPostedFileBase
,而不是您在问题中使用的具体
HttpPostedFile
类。