我试图在LINQ中的多个表之间执行连接.我有以下课程:
Product {Id, ProdName, ProdQty}
Category {Id, CatName}
ProductCategory{ProdId, CatId} //association table
Run Code Online (Sandbox Code Playgroud)
我使用以下代码(其中product,category以及productcategory上述类的实例):
var query = product.Join(productcategory, p => p.Id, pc => pc.ProdID, (p, pc) => new {product = p, productcategory = pc})
.Join(category, ppc => ppc.productcategory.CatId, c => c.Id, (ppc, c) => new { productproductcategory = ppc, category = c});
Run Code Online (Sandbox Code Playgroud)
使用此代码,我从以下类中获取一个对象:
QueryClass { productproductcategory, category}
Run Code Online (Sandbox Code Playgroud)
producproductcategory的类型是:
ProductProductCategoryClass {product, productcategory}
Run Code Online (Sandbox Code Playgroud)
我不明白加入的"表"在哪里,我期待一个包含所涉及类的所有属性的单个类.
我的目标是使用查询产生的一些属性填充另一个对象:
CategorizedProducts catProducts = query.Select(m => new …Run Code Online (Sandbox Code Playgroud) 我想DropDownList在(使用)优选地在级联中创建两个.MVC3RazorC#
我想有一个下拉列表,您可以选择年份,另一个下拉列表,您可以根据所选年份选择特定的月份.
我们说得很简单.当我在下拉列表"年"中选择当前年份(即2011年)时,下拉列表"月"将填充当月(即3月)的月份.对于其他情况(其他年份),没有给出限制.此外,在选择下拉列表"年"中的任何元素之前,"阻止"下拉列表"月"将是很好的.
我已经在互联网上查找了一些解决方案,使用jQuery甚至是自制方法,但它们都引用了过去版本的MVC,并且一些命令已被弃用MVC3.
我有从数据库派生的以下EF类(简化)
class Product
{
public string ProductId;
public string ProductName;
public string CategoryId;
public string CategoryName;
}
Run Code Online (Sandbox Code Playgroud)
ProductId是表的主键.
对于DB设计者做出的糟糕的设计决策(我无法修改它),我有CategoryId和CategoryName在这个表中.
我需要一个DropDownList的使用(不同)CategoryId的价值,并CategoryName为文本.因此我应用了以下代码:
product.Select(m => new {m.CategoryId, m.CategoryName}).Distinct();
Run Code Online (Sandbox Code Playgroud)
从逻辑上讲,它应该使用CategoryId和CategoryName作为属性创建一个匿名对象.在Distinct()保证有没有重复对(CategoryId,CategoryName).
但实际上它不起作用.据我所知,Distinct()当集合中只有一个字段时,它就会忽略它们......这是正确的吗?有没有解决方法?谢谢!
UPDATE
对不起product是:
List<Product> product = new List<Product>();
Run Code Online (Sandbox Code Playgroud)
我找到了另一种获得相同结果的方法Distinct():
product.GroupBy(d => new {d.CategoryId, d.CategoryName})
.Select(m => new {m.Key.CategoryId, m.Key.CategoryName})
Run Code Online (Sandbox Code Playgroud) 我猜大多数使用Visual Studio的人在创建他们的第一个ASP.NET MVC项目时都有同样的反应:Design View最终在哪里?
当使用传统的Web窗体开发在Visual Studio中的应用程序,在设计视图是非常方便的,它可以帮助你通过简单的拖拽,并从工具箱到设计页面下降的项目来创建用户控制和其他组件在您的网页.虽然它不允许定位和先进的造型,如Dreamweaver中做相反,它是一个非常有用的功能,如果你想避免痛苦的HTML格式和CSS样式(或者你没有HTML的良好的知识).
有没有办法用一个平面设计师创建视图布局,然后设计与景观的"逻辑"部分整合(即使用模型来填充一个从/ /提交数据到控制器)?
为了填充List<int>从1到n的数字范围,我可以使用:
for (i=1; i<=n; i++)
{
myList.Add(i);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法通过使用LINQ内联表达式来实现相同的结果?
UPDATE
假设我有一个方法getMonthName(i),给定整数返回月份的名称.我可以使用Enumerable以某种方式直接使用月份名称填充列表
我正在用C#开发一个ASP.NET MVC 3应用程序,我使用Razor.我现在正处理一个问题,涉及通过Controller向View传递/接收的ViewModel绑定对象.让我们说清楚.我有以下ViewModels:
public class ContainerViewModel
{
public int ContainerId {get; set;}
public string ContainerName {get; set;}
public List<ItemPostModel> ItemData {get; set;}
}
public class ItemPostModel
{
public int ItemId {get; set;}
public string ItemName {get; set;}
public int ItemValue {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
该ContainerViewModel用于将数据传递给视图.其属性ContainerId和ContainerName仅用于显示目的.该List<ItemPostModel>酒店于使用填充表单.View看起来像这样(它是简化版):
<strong>@Model.ContainerName</strong>
@using (Html.BeginForm())
{
<fieldset>
@foreach(var item in Model.ItemData)
{
@Html.TextBox(item.ItemId);
@Html.TextBox(item.ItemName);
@Html.TextBox(item.ItemValue);
<p>
<input type="submit" value="Save" />
</p>
}
</fieldset>
}
Run Code Online (Sandbox Code Playgroud)
该控制器相应的操作方法 …
在我的控制器中,我有一个ProductInfo来自我的域模型的类,我需要它的一些信息来填充我的视图模型 ProductStatsVM.
如何填充视图模型?我听说过三种可能的方法:
我知道有些像AutoMapper这样的工具,我确实会使用它,但之前我想了解如何在不使用任何其他工具的情况下从Controller中填充视图模型的逻辑.
我正在使用Razor和C#开发ASP.NET MVC 3 Web应用程序.
我刚刚发现我对全局变量有一些问题,可能是因为我对MVC相对较新.
我有一个带有一些全局变量和动作方法的控制器.我声明了一个全局变量,以便允许操作方法操纵它并将操作反映到所有操作方法.我有以下情况:
public class myController : Controller
{
private string _MyGlobalVariable;
public ActionResult Index()
{
_MyGlobalVariable = "Hello";
//other code
return View("MyView");
}
public ActionResult Print()
{
_MyGlobalVariable += "Print";
return View("PrintView", _MyGlobalVariable);
}
}
Run Code Online (Sandbox Code Playgroud)
在打印()动作方法被调用与Html.ActionLink()从MyView的视图.
令人惊讶的是_MyGlobalVariable的价值没有保留!所以在指令之前_MyGlobalVariable的值_MyGlobalVariable += "Print"等于null.
我犯了一些错误吗?如何在对Views的调用之间保留全局变量的值?
谢谢
弗朗切斯科
PS:在我的具体情况下,全局变量是一个,Dictionary<K,V>但我想它不会改变逻辑.
PPS:我知道你可以使用的ViewModels而不是全局变量传递的操作方法之间,但在我的情况下的数据要少得多的代码,如果我用一个Dictionary<K,V>通常我不会在包装的ViewModels(我使用波苏斯或Lists<T>)
我想从我的视图中将参数传递给jQuery document.ready()函数:
$(document).ready(function (parameter){
$('select[name=Product]').val(parameter);
});
Run Code Online (Sandbox Code Playgroud)
如何从我的View中触发事件并传递参数?我使用Razor作为View引擎.
谢谢
我想知道如何在C#和T-SQL中存储时间.我知道它们都提供了DateTime类型,但我只需要存储时间.例如:
var startTime = 9PM;
var endTime = 10PM;
Run Code Online (Sandbox Code Playgroud)
然后从数据库中存储/检索此值.提前致谢.
弗朗切斯科