Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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
C# 我应该如何使用ASP.NET MVC3视图的这个简单创建视图来编程这个controllers ActionResult方法?_C#_.net_Asp.net Mvc 3_Controller - Fatal编程技术网

C# 我应该如何使用ASP.NET MVC3视图的这个简单创建视图来编程这个controllers ActionResult方法?

C# 我应该如何使用ASP.NET MVC3视图的这个简单创建视图来编程这个controllers ActionResult方法?,c#,.net,asp.net-mvc-3,controller,C#,.net,Asp.net Mvc 3,Controller,我不确定是否应该在这个基本的Create视图中使用formscolection或其他内容 (注意:我正在为标记ICollection使用a) 模型 还是别的什么 [HttpPost] public ActionResult Create(... ??? ...) { .... ???? } 由于您有一个强类型视图,因此可以让[HttpPost]方法采用与变量相同的类型,例如: [HttpPost] public ActionResult Create(Product model) {

我不确定是否应该在这个基本的
Create
视图中使用
formscolection
或其他内容

(注意:我正在为标记
ICollection
使用a)

模型 还是别的什么

[HttpPost]
public ActionResult Create(... ??? ...)
{
  .... ????
}

由于您有一个强类型视图,因此可以让
[HttpPost]
方法采用与变量相同的类型,例如:

[HttpPost]
public ActionResult Create(Product model)  
{  
    if (ModelState.IsValid)
    {
        // add new product
        .... ????
    } 
}  
DefaultModelBinder
将获取返回的值,并将它们插入强类型模型。中提琴


只要标签集合模板的模型类型为
string
,MVC就会迭代该集合,这样就可以对其进行绑定(尽管您可能必须从
ICollection
更改为List)

更新

正如我们在评论中所讨论的,与其为每个标签创建一个文本框,不如创建一个单独的ViewModel,其中包含所有其他产品属性

不要在ViewModel中使用
列表标记
,而是创建以下属性:

public string TagCollection { get; set; }

在您的视图中,有一个用于
TagCollection
的文本框。然后,在创建操作中,您可以将TagCollection字符串解析到标记列表中。

因为您有一个强类型视图,您可以让您的
[HttpPost]
方法采用与变量相同的类型,例如:

[HttpPost]
public ActionResult Create(Product model)  
{  
    if (ModelState.IsValid)
    {
        // add new product
        .... ????
    } 
}  
DefaultModelBinder
将获取返回的值,并将它们插入强类型模型。中提琴


只要标签集合模板的模型类型为
string
,MVC就会迭代该集合,这样就可以对其进行绑定(尽管您可能必须从
ICollection
更改为List)

更新

正如我们在评论中所讨论的,与其为每个标签创建一个文本框,不如创建一个单独的ViewModel,其中包含所有其他产品属性

不要在ViewModel中使用
列表标记
,而是创建以下属性:

public string TagCollection { get; set; }

在您的视图中,有一个用于
TagCollection
的文本框。然后,在创建操作中,您可以将TagCollection字符串解析到标记列表中。

只要标记集合模板的模型为string类型,MVC将迭代该集合,以便将其绑定(尽管您可能必须从ICollection更改为list)。如果标记集合不在列表中,会发生什么情况。。但是说我不知道。。列表?此外,将标签集合更改为
IList
List
也不起作用->它会创建一个包含所有内容的字符串。因此,如果我在文本框中输入以下内容:
abc 1234 asp.net-mvc3
它会将其作为一个字符串存储在集合中。。。不是3个单独的字符串。将元素命名为listname[0]listname[1],DefaultModelBinder将检测到它是一个集合并连接到您的列表。我将创建一个单独的ViewModel,其中包含所有其他产品属性,而不是列表标记,具有以下属性:
公共字符串TagCollection{get;set;}
,并具有用于TagCollection的文本框。然后,在创建操作中,可以将TagCollection字符串解析到标记列表中。只要标记集合模板的模型为string类型,MVC将迭代该集合,以便可以将其绑定(尽管您可能必须从ICollection更改为list)。如果标记集合不在列表中,会发生什么情况。。但是说我不知道。。列表?此外,将标签集合更改为
IList
List
也不起作用->它会创建一个包含所有内容的字符串。因此,如果我在文本框中输入以下内容:
abc 1234 asp.net-mvc3
它会将其作为一个字符串存储在集合中。。。不是3个单独的字符串。将元素命名为listname[0]listname[1],DefaultModelBinder将检测到它是一个集合并连接到您的列表。我将创建一个单独的ViewModel,其中包含所有其他产品属性,而不是列表标记,具有以下属性:
公共字符串TagCollection{get;set;}
,并具有用于TagCollection的文本框。然后,在创建操作中,可以将TagCollection字符串解析到标记列表中。
public string TagCollection { get; set; }