将C#对象转换为GET请求

时间:2015-07-16 18:36:49

标签: c# asp.net asp.net-mvc

我想将我的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);
    } 

2 个答案:

答案 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