我想将我的C#对象转换为GET请求。虽然我在我的控制器post方法中手动完成但我只是想知道,有没有办法将c#对象转换为GET请求。
例如:我手动在控制器中创建了我的endPointURI字符串,但我希望通过一些系统的过程来完成。
我有一个名为ClassA的类,看起来像这样
ClassA的
public class ClassA
{
public int ID { get; set; }
public string Origin { get; set; }
public string Destination { get; set; }
}
我使用此类
在我的View中创建了一个表单Search.cshtml
<div>
@using (Ajax.BeginForm("SearchAction", "Search", new AjaxOptions()
{
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "ResultBox"
}))
{
<div class="form-group">
<label>Origin:</label>
@Html.TextBoxFor(x => x.Origin, new { @class = "form-control" })<br/>
</div>
<div class="form-group">
<label>Destination:</label>
@Html.TextBoxFor(x => x.Destination, new { @class = "form-control"})<br/>
</div>
<div class="text-center">
<input class="btn btn-success" type="submit" value="Check" />
</div>
}
和我的行动&#34; SearchAction&#34;在控制器类&#34; SearchController&#34;就像这样
SearchController.cs
[HttpGet]
public ActionResult SearchAction()
{
return View();
}
[HttpPost]
public ActionResult SearchAction(ClassA obj)
{
// I want to make this string through some process ( not manually)
String endPointURI = "/v1/shop?origin="+obj.Origin+"&destination="+obj.Destination;
return View("Result",endPointURI);
}
答案 0 :(得分:2)
您很可能正在寻找UriHelper.Action
代码看起来很近:
String endPointURI = Uri.Action(
actionName:"shop", controllerName:"ShopController",
routeValues: new {origin=obj.Origin,destination=obj.Destination});
return View("Result",endPointURI);
请注意,如果您尝试重定向的操作将整个ClassA
作为参数,则可以直接传递。
ActionResult Shop(ClassA model)...
Uri.Action(... routeValues: new {model=obj});
答案 1 :(得分:0)
我很抱歉,但我认为没有办法自动完成。也许你可以使用String.Format来简化它:https://msdn.microsoft.com/en-us/library/system.string.format(v=vs.110).aspx