我刚刚下载了新的nopCommerce 3.2 MVC 4应用程序.当我在Visual Studio中打开解决方案时,我无法添加控制器:"添加"菜单中没有"控制器...."选项.当我在Controller内部右键单击时,也没有"添加视图".
它似乎将解决方案中的所有项目都视为"Web表单".
我认为这与上一次Windows更新有关.它改变了一些东西 我有Visual Studio的最新更新.
任何人都知道如何解决这个问题?谢谢
更新:解决了.需要安装此更新:
[ASP.NET和Web Tools 2013.1 for Visual Studio 2012] [1]:[1]:http://blogs.msdn.com/b/webdev/archive/2013/11/18/announcing-release-of-asp -net-和网络工具-2013-1换视觉工作室2012.aspx
这是我到目前为止:
@Html.DropDownList("id", (SelectList)ViewBag.Values, new { onchange = "UpdateProduct(this);" })
<script language="JavaScript">
$('#id').on('change', function () {
var data = { prodID: 5, catID: 8 }; // < added test values
$.post('GiftList/UpdateProduct', data, function (responseData) {
//callback function
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
这是我更新的操作方法:
[HttpPost]
public ActionResult UpdateProduct(int prodID, int catID)
{
........
product.Category= catID;
_productService.UpdateProduct(product);
...
Run Code Online (Sandbox Code Playgroud)
我只是不知道如何"连线"这一切.
原始问题:
我有一个DropDown,当一个项目被选中时,运行一些代码并更新数据库中的Product表.
此下拉列表包含类别表(id和名称)中的项目:
@Html.DropDownList("id", (SelectList)ViewBag.Values, new { onchange = "UpdateProductsDB(this);" })
Run Code Online (Sandbox Code Playgroud)
我需要传入所选类别的'id'字段.
我还需要从Product表中传递Product Id以进行更新.
我可以通过以下方式访问View中的产品ID('id'):
@foreach (var item in Model.Products)
{ ....
item.Id
Run Code Online (Sandbox Code Playgroud)
我添加了一个隐藏的字段:
<input id="item_Id" …Run Code Online (Sandbox Code Playgroud) 如何使用LINQ中的条件重写它?
如果selectID = 0,我希望它运行:
var products = from p in product.Table
orderby p.Name
where (p.stock == stockId)
select p;
Run Code Online (Sandbox Code Playgroud)
如果selectID不为零,我希望它运行:
var products = from p in product.Table
orderby p.Name
where (p.stock == stockId) &&
(p.Id == selectID)
select p;
Run Code Online (Sandbox Code Playgroud)
这下面有效,但是我必须使用"虚拟"第二个条件(p.hidden == false)才能使三元运算符工作:
var products = from p in product.Table
orderby p.Name
where (p.stock == stockId) &&
(selectID != 0 ? p.Id == selectID : p.hidden == false)
select p;
Run Code Online (Sandbox Code Playgroud)
有没有办法摆脱(p.hidden == false),因为逻辑中不需要它,只是让操作员工作.谢谢
我需要将DropDown中的2个值传递给Action方法:
@using (Html.BeginForm("AddMemberToEvent"))
{
@Html.DropDownList("ddlPeopleList",
new SelectList(Model.PeopleList, "Id", "Username"), "Select: ",
new { onchange = "this.form.submit();", eventID = Model.catID })
}
[HttpPost]
public ActionResult AddMemberToEvent(string ddlPeopleList, string eventID)
{
Run Code Online (Sandbox Code Playgroud)
ddlPeopleList参数有效,..我对DropDown列表的第一个参数有点困惑,...,它是DropDown的名称还是代码使用的Selected值?
eventID没有被传入.我在下拉列表中设置了一个断点,并且存在正确的值,它只是没有传递给方法.有没有更好的方法来实现这个?谢谢
更新:我通过这样解决了它.使用隐藏字段:
@using (Html.BeginForm("AddMemberToEvent"))
{
@Html.Hidden("eventID", Model.catID )
Run Code Online (Sandbox Code Playgroud)