asp.net mvc - Маршрут для строки или интервала (т.е./type/23 или/type/hats)

Это зависит от того, что вы хотите сделать. Я лично хотел переименовать свой проект, чтобы в верхней части приложения и под значком в меню телефона не было указано MainActivity.

Для этого я зашел в файл Android Manifest.xml и отредактировал

<activity
        android:name=".MainActitivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

И отредактировал android:name=".Mynewname", а затем отредактировал строку title_activity_main в строках. XML-файл, соответствующий имени.

Надеюсь, это поможет!

5
задан vdh_ant 30 June 2009 в 02:11
поделиться

2 ответа

Измените свою подпись, чтобы принять строку. Затем проверьте, является ли значение id int. Если да, то поиск по идентификатору, если не поиск по имени. Если вы не найдете совпадения, сделайте свое перенаправление.

public class TypeController
{ 
    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult View(string id)
    {
       Product product = null;
       int productID = -1;
       if (int.TryParse( id, out productID))
       {
           product = db.Products
                       .Where( p => p.ID == productID )
                       .SingleOrDefault();
       }
       else
       {
           product = db.Products
                       .Where( p => p.Name == id )
                       .SingleOrDefault();
       }

       if (product == null)
       {
           return RedirectToAction( "Error" );
       }
       ...
    }
}

Причина, по которой я сделал это, заключается в том, что для того, чтобы знать, какой контроллер / действия применить, фреймворк будет искать тот, который соответствует подписи переданные данные маршрута. Если у вас нет соответствующей подписи - в данном случае той, которая принимает строку - вы получите исключение перед вызовом любого из ваших фильтров. К сожалению, я не думаю, что у вас может быть один, который принимает строку, а другой, который принимает int - в этом случае фреймворк не сможет определить, какой из них должен соответствовать, если передан единственный параметр, по крайней мере, если он число, то есть.

4
ответ дан 15 December 2019 в 01:09
поделиться

Не уверен, что ты справишься. Я бы подумал, что вам нужно передать строку, а затем проверить, является ли она числовой, но может быть лучший способ.

Что касается использования перенаправления

return RedirectToAction("MyProfile", "Profile");

Вы можете передавать значения маршрута как часть RedirectToAction call, чтобы вы могли передать идентификаторы или имена и т. д., если это необходимо.

Есть и другие способы, такие как перенаправление на маршруты, которые также могут быть полезны для того, что вы хотите.

0
ответ дан 15 December 2019 в 01:09
поделиться
Другие вопросы по тегам:

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