通过umbraco中的脚本文件保存表单值

时间:2013-03-14 11:37:06

标签: asp.net-mvc razor umbraco

你好我想在数据库中保存umbraco表格的值,因为我已经制作了脚本文件,在这个脚本文件中,我创建了保存数据的函数,并在同一个脚本文件中调用了这个函数,这个脚本文件用于宏我已经在我的页面的模板中调用了这个宏,但它不起作用这种方法是否正确或者我还有其他的东西我的基本目标是在不创建我的usercontrol的情况下将数据保存在数据库中

代码是

@functions
{
    public void AddToCart()
    {
        string con = System.Configuration.ConfigurationManager.AppSettings["umbracoDbDSN"].ToString();
        SqlConnection OnCon = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["umbracoDbDSN"].ToString());
        ItemsDataContext db = new ItemsDataContext(con);
        var request = HttpContext.Current.Request;
        string itemcode= request.Form["ItemCode"].ToString();
        string itemname = request.Form["ItemName"].ToString();
        string itemcategory = Request.Form["ItemCategory"].ToString();
        string userid = "Pallavi";
        db.sp_AddItems(userid, itemcode, itemcategory, itemname, 0);


        HttpContext.Current.Session["UserId"] = "Pallavi";
    }
}


@if (!IsPost)
{
    AddToCart();
}

并在模板上调用此宏

<umbraco:Macro Alias="Uc_Cart" runat="server"></umbraco:Macro>

1 个答案:

答案 0 :(得分:6)

你接近是错的。您必须使用Umbraco在其API中提供的方法,而不是尝试直接将数据写入数据库。

尝试使用此代码从Razor代码创建新文档:

@using umbraco.BusinessLogic;
@using umbraco.cms.businesslogic.web;
@{
    DocumentType dt = DocumentType.GetByAlias("Textpage"); 
    User author = umbraco.BusinessLogic.User.GetUser(0); 
    Document doc = Document.MakeNew("My new document", dt, author, parentID); 
}

以上示例适用于Umbraco 4.x.如果您使用的是Umbraco v6.x,您还可以使用新的API方法:

@{
    // get an instance of the contentService
    var contentService = ApplicationContext.Services.ContentService;
    // create new content, the last param is the userId and is optional [default = 0]
    IContent newContent = contentService.CreateContent("My new document", parentID, "Textpage", 0);
    // set property values
    newContent.SetValue("propertyAlias", "Value");
    // save (or save and publish)
    contentService.Save(newContent);
}