C# 传递两个值以查看?
我有一个查询,我需要获得post+它拥有的每个标记。但由于标签在单独的表中,这让我很难做到,原因有两个。我甚至不确定我是否需要传递两个值,也许我可以用不同的方式来传递 请注意,模型是使用LINQtoSQL类自动创建的C# 传递两个值以查看?,c#,asp.net,linq,linq-to-sql,asp.net-mvc-3,C#,Asp.net,Linq,Linq To Sql,Asp.net Mvc 3,我有一个查询,我需要获得post+它拥有的每个标记。但由于标签在单独的表中,这让我很难做到,原因有两个。我甚至不确定我是否需要传递两个值,也许我可以用不同的方式来传递 请注意,模型是使用LINQtoSQL类自动创建的 分贝 代码 问题 如您所见,我想将post传递到我的视图,这很有意义,但我需要以某种方式传递包含标记的tagList字符串。我该怎么做 我觉得我的问题不好。我对SQL/LINQ没有经验,所以这是我唯一想到的。也许我可以做同样的事情,稍微“聪明点” 好的,谢谢你的回答。Vie
分贝 代码 问题
post
传递到我的视图,这很有意义,但我需要以某种方式传递包含标记的tagList
字符串。我该怎么做
好的,谢谢你的回答。ViewBag和创建BlogViewModel都很好。我想我会选择BlogViewModel。但是我的第二个问题仍然存在。您是否考虑过创建一个包含这两个对象的ViewModel,并将该ViewModel传递给您的视图?您还可以使用LINQ来改进查询 (注意:我在手机上发布此消息,以便语法可以关闭) 型号:
public class TaggingModel
{
public string TagList {get; set;}
public PostClass Post {get; set;}
}
public TaggingModel(string tagList, Post post)
{
this.TagList = tagList;
this.YourPost = post;
}
var post = _db.Posts.Where(pt => pt.PostID == id).Single();
var postTags = post.PostTags.Where(pt => pt.PostID == id);
string tagList = string.Empty;
foreach(var pt in postTags)
{
var tag = _db.Tags.Where(t => t.ID == pt.TagID).Single();
tagList += tag.Name + " ";
}
TaggingModel model = new TaggingModel(tagList, post);
return View(model);
代码(使用LINQ):
public class TaggingModel
{
public string TagList {get; set;}
public PostClass Post {get; set;}
}
public TaggingModel(string tagList, Post post)
{
this.TagList = tagList;
this.YourPost = post;
}
var post = _db.Posts.Where(pt => pt.PostID == id).Single();
var postTags = post.PostTags.Where(pt => pt.PostID == id);
string tagList = string.Empty;
foreach(var pt in postTags)
{
var tag = _db.Tags.Where(t => t.ID == pt.TagID).Single();
tagList += tag.Name + " ";
}
TaggingModel model = new TaggingModel(tagList, post);
return View(model);
您还可以使用其他方法发送消息,例如,如果不想为其实现模型,则将其存储在ViewData中。定义一个视图模型类,该类具有post属性和标记列表属性,并在调用View()时传递该类.您可以使用ViewBag动态对象或ViewData传递一个项目,使用第二个项目作为视图的模型。还可以定义viewmodel类,或使用元组
ViewData["tags"] = tagsList;
return View(post);
或者,如果不想创建viewmodel,但仍然需要强类型视图
return View(Tuple.Create(post, tagsList));
我更喜欢创建包含两个不同对象和属性的模型:
public class EditPageModel()
{
public PostClass Post (get; set;}
public string TagList {get; set;}
}
然后返回这个:
return View (new EditPageModel(){Post = post, TagList = tagList});
如何在视图中使用Tuple方法访问标记列表?Tuple类具有Item1、Item2、Item3等属性名称,具体取决于属性计数。假设视图中有类似于Tuple的模型,则可以使用model.Item2访问标记列表