私はasp.net MVCを初めて使用しています。私はいくつかのXML Webサービスを扱っており、それらとやり取りするWebアプリケーションを作成する必要があります。Webサービスと対話するためのモデルとコントローラの作成
ウェブアプリケーションは、テーブル上のツールの1つがクリックされると、ツールの情報をフォームに入力するすべてのツールのIDと説明のテーブルで構成されます。
Webサービスは、通常、// localhost/dbservices/tool/idからアクセスされます。 各ページには、指定されたツールのIDに対応するXMLが含まれています。
MVCを使用してこのプロジェクトを開始する方法としてちょっと混乱しています。 私はローカルデータベースになかったモデルデータを使ったことはありません。
モデルにXMLデータを割り当て、コントローラでそのデータにアクセスしてビューに渡す方法を教えてください。
ここに私が試しているコードがあります。私は過去にこれに似たWebフォームアプリケーションを作った。ここでは、すべてのツールのリストをコントローラに渡そうとしています。私はそれからいくつかのコードを取り、それを私のMVCアプリケーションに実装しようとしています。私はここで正しい道にいるのだろうかと思っています。モデルビューとツール用コントローラも含まれています。
public ActionResult Component()
{
string rt;
WebRequest request =
WebRequest.Create("http://localhost/DbService/Tool");
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
rt = reader.ReadToEnd();
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(rt);
XmlNodeList nodeList = xmldoc.GetElementsByTagName("Tool");
List<Tool> ToolIdList = new List<Tool>();
Tool[] toolArray = new Tool[3];
List<string> toolList = new List<string>();
foreach (XmlNode node in nodeList)
{
toolList.Add(node.InnerText);
}
foreach (Tool tool in ToolIdList)
{
foreach (var toolId in toolList)
{
tool.ToolId = toolId;
}
}
return View(ToolIdList);
}
ツールモデル:
public class Tool
{
public int Id { get; set; }
public string ToolId { get; set; }
public string Adapter { get; set; }
public int TNumber { get; set; }
public List<string> ComponentList { get; set; }
public List<string> AccessoryList { get; set; }
}
ビュー:
@model IEnumerable<Project.Models.Tool>
@foreach (var item in Model)
{
@Html.DisplayFor(modelItem => item.ToolId)
}
データベースから値を取得する場所は、Webサービスから取得する場所です。 – stuartd
私の質問にいくつかのコードを追加しました。これは正しい道に似ているようですか? – totallytypicalcow
見た目はOKです。しかし、あなたはストリームとストリームリーダを処分すべきです。最良の方法は 'using'ステートメントでそれらを包むことです。実際には – stuartd