ASP.NET MVC - Представление с многоуровневыми моделями

Я закончил тем, что вместо этого использовал StringRequest от Volley, потому что я использовал слишком много драгоценного времени, пытаясь заставить JsonObjectRequest работать.

RequestQueue queue = Volley.newRequestQueue(this);
String url ="http://myserveraddress";

StringRequest strRequest = new StringRequest(Request.Method.POST, url,
                new Response.Listener<String>()
                {
                    @Override
                    public void onResponse(String response)
                    {
                        Toast.makeText(getApplicationContext(), response, Toast.LENGTH_SHORT).show();
                    }
                },
                new Response.ErrorListener()
                {
                    @Override
                    public void onErrorResponse(VolleyError error)
                    {
                        Toast.makeText(getApplicationContext(), error.toString(), Toast.LENGTH_SHORT).show();
                    }
                })
        {
            @Override
            protected Map<String, String> getParams()
            {
                Map<String, String> params = new HashMap<String, String>();
                params.put("tag", "test");
                return params;
            }
        };

queue.add(strRequest);

Это сработало для меня. Это так же просто, как JsonObjectRequest, но вместо этого используется строка.

33
задан alex2k8 3 June 2009 в 11:59
поделиться

2 ответа

Строковая индексация ViewData неверна. Вероятно, вы захотите создать небольшой класс-оболочку для данных представления с несколькими переменными и передать его в строго типизированное представление. IE:

public class FooBarViewData
{
   public Foo Foo {get; set;}
   public Bar Bar {get; set;}
}
public ActionResult Edit()
{
   FooBarViewData fbvd = new FooBarViewData();
   fbvd.Foo = new Foo(){ A = "aaa"};
   fbvd.Bar = new Bar(){ B = "bbb"};
   return View(fbvd);
}

Тогда ваше представление просто строго типизировано для FooBarViewData , и вы можете вызывать члены этого объекта, используя свойство Модель .

40
ответ дан 27 November 2019 в 18:26
поделиться

You have a couple of choices. First, you can reference them from ViewData and use an HtmlHelper extension. Or you could create a view-specific model and use a strongly-typed viewpage for Edit.aspx.

public class EditModel
{
    public Foo foo { get; set; }
    public Bar bar { get; set; }
}

public ActionResult Edit()
{
    var model = new EditModel();

    model.foo = new Foo { A = "aaa" };
    model.bar = new Bar { B = "bbb" };

    return View( model );
}

(Edit.aspx is of type ViewPage)

Either way, the HtmlHelper extension will pick up any initial values.

<form action="/some/process" method="post">
     <%= Html.Hidden( "foo.A" ) %>
     <%= Html.Hidden( "bar.B" ) %>
</form>
10
ответ дан 27 November 2019 в 18:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: