如何在C#中构造方法?

时间:2013-07-03 13:20:54

标签: c# asp.net-mvc

我在我的MVC应用程序中有一个类,我在我的控制器中调用并在我的视图中填写值

public class Mainclass
    {
    public List<main> mainset = new List<main>();
    public void Crudmain(string path) //Capital "C" => Create, "R" => Read, "U" => update
    {
        XDocument x = new XDocument(new XElement("mainset"));
        foreach (main main in mainset)
        {
            x.Root.Add(mainxml(main)); //mainxml creates xelements for main
        };
        x.Save(path + "/" + 0 + ".xml");
    }
     public class main
    {
        public personalinfo info { get; set; }
        public addressinfo currentaddr { get; set; }
        public addressinfo otheraddr { get; set; }
        public telephone currenttel { get; set; }
        public telephone othertel { get; set; }
     }

在我的控制器中,我在动作中调用Crudmain()。

        private main cb = new main(); 
        [HttpPost]
        public ActionResult Create(string button, main x)
        // getting path via some long code
        if (ModelState.IsValid)
        {
        cb = x;
        cb.Crudmain(path);
        return View("Read", cb);
        }
        else
        {
         return View("Create", cb);
        }

我正在获取XML文件,但数据为空。甚至依赖于Personalinfo中对象变量的Path也是正确的,但数据是空的。我有一种感觉,Crudmain正在初始化一个新的主类。我刚刚从VB转换到C#并且不太了解这些方法,有人可以帮我弄清楚如何将Mainclass设置为我的代码中控制器传递的Mainclass。

1 个答案:

答案 0 :(得分:1)

private main cb = new main(); 

public ActionResult Create(string button, main x)

cb = x;

您正在使用cb覆盖x。我认为x实际上是空白的。但是很难说,因为你的代码没有格式化或命名。如果cb的类型为main,则它没有Crudmain()函数 - 该函数似乎只存在于Mainclass类中。


另一个问题是,您永远不会在mainset函数中将任何数据放入Mainclass。您为其分配了一个新列表,但从未对其进行任何操作。但这可能只是因为你的课程格式混乱。 cb.Crudmain(path);似乎仍然完全无效。