我在我的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。
答案 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);
似乎仍然完全无效。